首先这是我个人第一次写博客,希望通过这个平台这种方式记录下自己学习中的成长经历。
刚刚接触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是模式的寄存器,
这个说明了pwm的模式:
CCER2则是使能寄存器;
接下来是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)内部还是有个分频器,所以需要设置一下
基本讲解就是这样的,在做的过程中由于是第一次上手,也遇到很多麻烦,网上也是各种找资料, 最后也算完成了,最后希望大家共同学习进步!
上一篇:基于STM8的RFID程序设计
下一篇:STM8S的按键PWM调光灯历程
推荐阅读最新更新时间:2024-11-06 22:13
设计资源 培训 开发板 精华推荐
- 最小系统原理图
- 黄淮学院立创杯电子设计大赛-1002126A-刘晨茜
- 使用 ON Semiconductor 的 NCV8508 的参考设计
- LTC4227-1 演示板、双路理想二极管 / 单路热插拔控制器,故障后具有闩锁功能
- CAT3649,带有环境光传感器电路的 CAT3649 6 通道四模 LED 驱动器评估板
- LTC1662IMS8 超低功耗、双 10 位 DAC 在 MSOP 中的典型应用
- LT1172HVIQ 的典型应用,1.25A 外部电流限制
- RT9261B Vfm 升压 DC/DC 转换器的典型应用
- 使用具有引脚可配置模拟输入范围的 LTC2389CUK-18、18 位、2.5Msps SAR ADC 的典型应用
- 用于微处理器复位电路的 NCP301HSN30T1 3V 电压检测器的典型应用