stm8 TIM2 PWM配置

来源:互联网 发布:马赛克拼图制作软件 编辑:程序博客网 时间:2024/05/19 04:27

首先这是我个人第一次写博客,希望通过这个平台这种方式记录下自己学习中的成长经历。
刚刚接触stm8,算刚入门,写的不对或者是需要改正的地方希望大家提出来,非常感谢!
这一次我主要讲的是关于stm8s103输出pwm波的配置。首先上成功输出的pwm波以及寄存器相关值的图片。
示波器
这里写图片描述

首先是时钟的配置:

    CLK_ICKR &=0X01; //打开内部高速时钟    CLK_CKDIVR = 0x00;//设置时钟为内部16M高速时钟

查阅手册得到相关信息(手册是最重要的工具还有参考):
时钟的开启操作:
这里写图片描述
这里写图片描述
设置16M高速时钟:
这里写图片描述
然后我们看一下CLK_CKDIVR寄存器:
这里写图片描述
所以只要设置全为零就是1分频,就可以得到16M高速时钟;
接下来进行TIM2的配置:

    CLK_PCKENR1 = 0x20; //tim2外设时钟使能    TIM2_CR1  = 0X00;   //TIM2计数器禁止

这里写第一个寄存器的用意是使能tim2外设时钟(其实可以不用,默认是使能的)该寄存器的解释如下:
这里写图片描述
写第二个寄存器是在开始时禁止计数器计数,,该寄存器具体如下:
这里写图片描述

TIM2_CCMR3 |= 0X70;   //设置定时器2 3通道 PWM模式2 输出模式    TIM2_CCER2 |= 0x03;    //低电平有效,OC1信号输出到对应的输出pin

这里主要是对定时器的模式以及使能的配置
CCMR3是模式的寄存器,
CCMR寄存器说明
这个说明了pwm的模式:
这里写图片描述
CCER2则是使能寄存器;
CCER寄存器说明

接下来是pwm的核心,频率以及占空比的设置:

/* Set the Autoreload value */    TIM2_ARRH = 0x00;    TIM2_ARRL = 0x8a;     /*TIM2 Frequency=16M/138=106k*/    TIM2_CCR3H  = 0x00;    //设置PWM输出占空比为40%    TIM2_CCR3L  = 0X37;

下面说一下计算的方法:
由时钟的配置可知 时钟为16M,自动重装载的值为0x008a=138;
所以 f=16M/138=106k;
占空比计算:0x0037=55;占空比=55/138=40%;

最后的一点配置:

    TIM2_PSCR = 0x00;       //不分频    TIM2_IER   |= 0X00;     //禁止中断使能    TIM2_CCMR3 |= 0X08;     //开启预装载    TIM2_CR1    = 0X01;     //TIM2计数器使能

TIM2(TIM3)内部还是有个分频器,所以需要设置一下
这里写图片描述

基本讲解就是这样的,在做的过程中由于是第一次上手,也遇到很多麻烦,网上也是各种找资料, 最后也算完成了,最后希望大家共同学习进步!

0 0
原创粉丝点击