通过仔细看stm8参考手册里有关pwm这一节,我们可以根据手册上的讲解,很容易配置出来一个pwm通道。
具体讲解下,首先看参考手册17.5.7 pwm模式这一节,这一节是针对TIM1定时器来实现的pwm:
通过看这些内容,我们知道如下信息:
1:设置TIM1_ARR寄存器设定频率,TIM1_CCR1确定占空比;
至于为何通过TIM1_ARR来设定寄存器频率,可以参考如下图:
看完上图就知道这个计数器的频率公式为:
F = 时钟频率/(预装载计数+1)
2:TIM1_CCMR1寄存器的OC1M位写入110或者111来确定PWM模式1或者2,而且,必须设置TIM1_CCMR1寄存器的OC1PE位使能预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装预装载寄存器;
3:必须通过设置TIM1_EGR寄存器的UG位来初始化寄存器。
知道如上信息后,我们针对TIM1的通道3设置为pwm,占空比位50%,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include #ifndef BIT #define BIT(n) (1<<(n)) #endif void pwm320k(void) { TIM1_CR1 &= ~BIT(0); //关闭TIM1 // TIM1_PSCRH = 0; TIM1_PSCRL = 0; //不分频16MHz // TIM1_ARRH = 0; TIM1_ARRL = 49; //16MHz/(49+1) = 320KHz // TIM1_CR1 |= BIT(7); //使能ARP TIM1_EGR |= BIT(0); //更新TIM1,使PSC有效 // TIM1_CCR3H = 0; TIM1_CCR3L = 25; //占空比50% // TIM1_CCMR3 = 104; //配置TIM1_CH3为PWM1模式输出 // TIM1_CCER2 |= BIT(0); //使能TIM1_CH3通道 // TIM1_CR1 |= BIT(0); //使能TIM1 TIM1_BKR |= BIT(7); //禁止刹车 } //***********端口配置******************/ void IO_Config(void) { //接收端led定义 PC_DDR |= 0X08; //设置PA3端口为输出模式 PC_CR1 |= 0X08; //设置PA3端口为推挽输出模式 } /***********************************/ void main() { IO_Config(); while (1) { pwm320k(); } } |
上一篇:STM8S103 IO口控制
下一篇:STM8使用TIM1测量PWM波
推荐阅读最新更新时间:2024-11-12 10:21
推荐帖子
- 热电偶测量线路处于断路时的问题
- 请教各位大侠,如果热电偶测量线路处于断路状态,怎么才能让测量电路有所指示?热电偶测量线路处于断路时的问题请问LZ的问题解决了没
- 绿茶 测试/测量
- 如何提高运放的抗干扰(辐射)能力
- 我是用ADA4528来做300倍的信号放大,特性如下:正常的放大信号波形如下:但是在设备周围打电话时,信号就会受到干扰我检查过运放的供电了,基本没有受到干扰,非常稳定;应该是辐射耦合进了运放的输入端,又被放大了300倍,请问大家:有没有什么手段可以解决这种现象?除了注意PCB布局,结构屏蔽,在原理图设计阶段可以加入什么抑制手段?如何提高运放的抗干扰(辐射)能力“但是在设备周围打电话时,信号就会受到干扰”是使用手机吧?有线电话不会产生这种现像的。 是的,就是手机
- sfcsdc 模拟电子
- 基于PIC单片机的仿生机器鱼的舵机控制
- 仿生机器鱼实验平台属于教育部和北京邮电大学共同出资支持的一项“国家级大学生创新性实验计划”项目,是一个集光、机、电、流体、智能于一体的实验平台,研究内容包括:仿生机器鱼机械结构的研究,推荐效率的研究以及控制性能的研究。 1仿生机器鱼平台简介: 设计制作的机器鱼模仿鲹科鱼类的外形,头部采用刚性结构的塑料材料。其形状采用流线型,模仿真鱼鱼头的形状和大小比例。在鱼头的内部空间里安装电源及控制电路,并在鱼头两侧鱼眼处及在头前部的偏下侧安装了3个红外传感器,构成了一个探测左、前、右
- hikesoso2010 Microchip MCU
- 发帖发问一个bootloader问题并邀请学习6410,PXA3XX等高级货的同志了!
- 这几天看了6410的eboot,并对nk.bin以及nk.nb0文件重新了解了一下,发现了很多疑问。主要是我以前一直用ADSbootloader,现在觉得两者有不可思议的差别。一、ADSbootloader没有拷贝全局变量到RAM的行为,但是eboot.nb0有——但是这两个格式的二进制文件都能在内存直接跑。这些只能用编译器不同,两个格式文件稍有差异来解释。二、eboot下载的是bin文件,但是烧写的一定是nb0文件,我没有找到解析bin文件成为nb0文件的地方,各位达人,知道在哪里的
- kacanmmx 嵌入式系统
- Hercules DIY 十一:第二路调试成功
- 我这个没有加LED,因为我调第二路很紧张,大家在看时注意听声音。我是用声音指示好不好用地http://v.youku.com/v_show/id_XNTk2MDA5MzA4.html现在两路都好用了,报警器的功能基本完成。有许有人会问报警器传感器整的这么复杂做什么,为什么不象坛子里有人印度姐那个方案。其实答案非常简单----实用。那个方案我也做过但有一点让我没采用。传感器的耗电问题非常地大。 HerculesDIY十一:第二路调试成功这个有意思,不错嘛:rose:
- ddllxxrr 微控制器 MCU
- MSP430矩阵及独立键盘
- 在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘公用的,组合式的按键。。这是为了节约硬件的成本啊。。。 #definekeyin(P1IN&0x0f)//低四位保持不变,高4位清零,这个宏定义就是这个意思。再写主函数的时候有这个语句:P1DIR=BIT7;//设置P1.0~P.3为输入
- Aguilera 微控制器 MCU
设计资源 培训 开发板 精华推荐
- 使用外部基准的 AD5324 12 位 DAC 的典型应用
- 具有电源排序功能的 LTC3589IUJ-1 8 输出降压稳压器的典型应用电路
- OP497FPZ精密绝对值运算放大器典型应用电路
- LTC3621IMS8E 1.2Vout、同步至 600kHz、强制连续模式同步降压型稳压器的典型应用
- 使用 Infineon Technologies AG 的 IRU3033 的参考设计
- AD8627ARZ精密放大器的典型应用电路,用于显示直流误差的光电二极管模型
- 使用 NXP Semiconductors 的 MC40XS6500EK 的参考设计
- SC8903 5A可调升降压模块
- 使用 Richtek Technology Corporation 的 RT7257G 的参考设计
- NE55八音盒电子琴copy