通过仔细看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-24 13:15
推荐帖子
- 提问+ 读《MCU工程师炼成记》问题三
- 书中介绍了FRAM开发板,板载资源非常丰富,活动中发放的430LaunchPad比较多,是否考虑可以发放一些FRAM开发板?另外书中P68,表5-1中,跳线序号4中括号内的“位于4上”是否有误?望勘正!!昨天书到手,还没来得及细读,接下来慢慢欣赏!!提问+读《MCU工程师炼成记》问题三
- dlyt03 微控制器 MCU
- 2440 I2S AD转换问题
- 请问能够通过I2S音频解码芯片进行ADC转换,再通过I2S接口回传至2440处理器吗?如何操作?音频芯片AK4554自带I2S接口,以及两路ADC转换,默认ADC一直工作,是否ADC的数据直接送到了I2S的SDO口?将SDO口接到2440的SDI口,通过寄存器能读出ADC转换的数据吗?在2440中配置好I2S接口,音频芯片MCLK,SCLK都有,然后读IISFIFO寄存器?什么时候读?实际测试时读出来的值一直是0x6969,不知是什么原因?2440I2SAD转换问题学习,期待高手
- katrina 嵌入式系统
- 最简传感器电路
- 最简传感器电路需要插到PC的串口使用,利用计算机的强大功能进行各种应用,其接口电路各有所长,偶以分立件组成的RS232电路最简其电路如下:最简传感器电路这也行,简单实用.SHT2x啥器件?http://www.sensirion.com.cn/看看这个 http://www.sensirion.com.cn/看看这个回复板凳zhjzh72_2004的帖子不是用IIC协议的么?咋用UART了?
- bjwl_6338 DIY/开源硬件专区
- BLUENRG-获取电池电量
- 使用BlueNRG,添加电池电量服务,并创建了一个CHAR_PROP_READ的character。aci_gatt_add_char(batServHandle,UUID_TYPE_128,&bat_char1_uuid,20,CHAR_PROP_READ|CHAR_PROP_NOTIFY,ATTR_PERMISSION_NONE,0,16,0,&batChar1Handle);但是app读取电量值时,调用不到aci_gatt_read_permit_req_event。请问
- yunyixiao 意法半导体-低功耗射频
- 懂手机蓝牙控制51单片机的高手进
- 各位高手,我是菜鸟,我想利用手机蓝牙控制51单片机的P1端口输出高低电平,现在需要有位高手指导我一下,我这里有蓝牙主从模块,也有开发板,但是不知道程序要怎样修改,我这里有段程序,大家帮忙看下是什么意思。#includeSTC11f.H#includeintrins.H#includeType.h#includeBT.h#includeUart.hsbitBTREST=P1^5;sbitBTKEY=P1^2;externucharuartbuf
- Jod_King 单片机
- wince5.0 S3c2440官方bsp,带camera驱动
- wince5.0S3c2440官方bsp,带camera驱动:http://www.itxxh.cn/book/2440/zaxsw1565.shtmlWINCE5.0系统下,OV9650CAMERA驱动程序:http://www.itxxh.cn/book/2440/zaxsw1568.shtmlwince5.0S3c2440官方bsp,带camera驱动?啥意思广告呗友情Up!
- 古木寒 WindowsCE
设计资源 培训 开发板 精华推荐
- 差分运放AD8138ARZ验证板11
- AD8601WDRTZ-REEL7放大器光电二极管电路典型应用
- LCD1602_ST7032_BOX
- LT6604CUFF-5 双路极低噪声、差分放大器和 5MHz 低通滤波器的典型应用电路
- 用于微处理器复位电路的 NCP300LSN185T1 1.85V 电压检测器的典型应用
- 用于汽车的 0V、3.3V、5V MOSFET 功率驱动器
- 用于数据采集系统的 5V 模拟放大
- 用户界面 - 用于 OLED 显示器的图形库应用电路
- 使用 ROHM Semiconductor 的 BU4926 的参考设计
- FRDM-17531EP-EVB,基于 MPC17531A 双 H 桥的 Freedom 扩展板,步进电机驱动器,2-8.6V,0.7A