![ARM微控制器与嵌入式系统 课件 30 定时器输出PWM编程要点_第1页](http://file4.renrendoc.com/view6/M03/0F/17/wKhkGWd5QA6AVzipAACMOAMoOT4931.jpg)
![ARM微控制器与嵌入式系统 课件 30 定时器输出PWM编程要点_第2页](http://file4.renrendoc.com/view6/M03/0F/17/wKhkGWd5QA6AVzipAACMOAMoOT49312.jpg)
![ARM微控制器与嵌入式系统 课件 30 定时器输出PWM编程要点_第3页](http://file4.renrendoc.com/view6/M03/0F/17/wKhkGWd5QA6AVzipAACMOAMoOT49313.jpg)
![ARM微控制器与嵌入式系统 课件 30 定时器输出PWM编程要点_第4页](http://file4.renrendoc.com/view6/M03/0F/17/wKhkGWd5QA6AVzipAACMOAMoOT49314.jpg)
![ARM微控制器与嵌入式系统 课件 30 定时器输出PWM编程要点_第5页](http://file4.renrendoc.com/view6/M03/0F/17/wKhkGWd5QA6AVzipAACMOAMoOT49315.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM微控制器与嵌入式系统
STM32的PWM配置主讲人:景妮琴北京电子科技职业学院内容STM32的PWM定时器生成PWM的编程要点输出通道配置PWM结构体PWM库函数定时器生成PWM原理PWM原理计数寄存器CNT重装寄存器ARR比较寄存器CCRCNTARRCCR定时器生成PWM的编程要点1、开启GPIO时钟、定时器时钟2、PWM输出端口配置3、复用引脚功能映射4、定时器配置5、输出通道配置6、PWM使能7、设置比较器值输出PWMPWM的输出通道针对高级定时器和通用定时器,查STM32的数据手册,选择使用不同定时器的不同通道进行配置。我们使用TIM3。定时器生成PWM的编程要点1、打开输出通道的GPIO时钟以及定时器(PWM)的时钟(1)打开GPIO的时钟使用TIM3的4个通道分别为:PA6,PA7,PB0,PB1打开GPIOA和GPIOB的时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
定时器生成PWM的编程要点1、打开输出通道的GPIO时钟以及定时器(PWM)的时钟(2)打开TIM3的时钟APB1时钟总线
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);定时器生成PWM的编程要点2、PWM输出端口配置使用TIM3的4个通道分别为:PA6,PA7,PB0,PB1先对PA6,PA7配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);
定时器生成PWM的编程要点2、PWM输出端口配置使用TIM3的4个通道分别为:PA6,PA7,PB0,PB1再对PB0,PB1配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure);
定时器生成PWM的编程要点3、复用引脚功能映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOB,GPIO_PinSource0,GPIO_AF_TIM3);GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM3);定时器生成PWM的编程要点4、定时器配置typedefstruct{uint16_tTIM_Prescaler; //预分频系数uint16_tTIM_CounterMode; //计数模式uint32_tTIM_Period; //定时器初值uint16_tTIM_ClockDivision; //分频因子uint8_tTIM_RepetitionCounter; //重复计数}TIM_TimeBaseInitTypeDef;定时器生成PWM的编程要点4、定时器配置分析:设置TIMx定时器的相关寄存器,主要是设置ARR和PSC。例:产生频率为500Hz,占空比为50%的PWM波形,可以设置如下:通用控制定时器时钟源TIM3CLK=42MHz*2=84MHz,设定定时器频率为=TIM3CLK/(TIM_Prescaler+1)=1MHz,得到:TIM_Prescaler=84-1而PWM的频率为1MHz/(TIM_Period+1)=500Hz.则TIM_Period=2000即定时器从0计数到1999,为一个定时周期定时器生成PWM原理TIM_CounterMode_Up 向上计数
定时器生成PWM原理TIM_CounterMode_Down 向下计数
TIMx_ARRTIMx_CNT中断定时器生成PWM的编程要点4、定时器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//预分频系数TIM_TimeBaseStructure.TIM_Period=2000-1;//定时器初值TIM_TimeBaseStructureTIM_CounterMode=TIM_CounterMode_Up;//计数模式TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//分频因子TIM_RepetitionCounter=0; //重复计数TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);定时器生成PWM的编程要点5、输出通道配置TIM_OCInitTypeDefTIM_OCInitStructure;typedefstruct{uint16_tTIM_OCMode; //输出通道模式uint16_tTIM_OutputState; //输出通道使能或失能uint16_tTIM_OutputNState; //输出互补通道使能或失能uint32_tTIM_Pulse; //比较器预装初值uint16_tTIM_OCPolarity; //输出通道极性uint16_tTIM_OCNPolarity; //输出互补通道极性uint16_tTIM_OCIdleState; //输出通道空闲时电平uint16_tTIM_OCNIdleState; //输出互补通道空闲时电平}TIM_OCInitTypeDef;定时器生成PWM的编程要点5、输出通道配置(1)TIM_OCMode的取值范围 //输出通道模式TIM_OCMode_Timing //定时器输出比较时间模式TIM_OCMode_Active //定时器输出比较主动模式TIM_OCMode_Inactive //定时器输出比较非主动模式TIM_OCMode_Toggle //定时器输出比较触发模式TIM_OCMode_PWM1 //定时器脉宽调制模式1TIM_OCMode_PWM2 //定时器脉宽调制模式2TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;定时器生成PWM的编程要点5、输出通道配置(1)TIM_OCMode的取值范围 //输出通道模式PWM模式1在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为有效状态,否则为无效状态。在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为无效状态(OC1REF=0),否则为有效状态(OC1REF=1)。
PWM模式2在递增计数模式下,只要TIMx_CNT<TIMx_CCR1,通道1便为无效状态,否则为有效状态。在递减计数模式下,只要TIMx_CNT>TIMx_CCR1,通道1便为有效状态,否则为无效状态。TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;定时器生成PWM的编程要点5、输出通道配置(2)TIM_OutputState的取值范围 //输出通道使能或失能TIM_OutputState_Enable //输出通道使能TIM_OutputState_Disable //输出通道失能TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;(3)TIM_OutputNState取值范围//输出互补通道使能或失能TIM_OutputNState_Enable //输出互补通道使能TIM_OutputNState_Disable //输出互补通道失能
TIM3没有互补通道,这个可以不设置定时器生成PWM的编程要点5、输出通道配置(4)TIM_Pulse取值范围//比较器预装初值比较器初值取值0-65535,TIM2和TIM5比较器取值0-2^32设置占空比,占空比=(CCRx/ARR)*100%,设置50%的占空比为,前面已经设置ARR=2000,因此这个地方的CCR应该设置为1000:TIM_OCInitStructure.TIM_Pulse=1000-1;定时器生成PWM的编程要点5、输出通道配置(5)TIM_OCPolarity取值范围TIM_OCPolarity_High //输出通道极性高电平TIM_OCPolarity_Low //输出通道极性低电平TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//设置输出极性为高,这个设置保证了在计数值小于CCR时,输出为有效的高电平,否则为低电平
定时器生成PWM的编程要点5、输出通道配置(6)TIM_OCNPolarity取值范围TIM_OCNPolarity_High //输出互补通道极性高电平TIM_OCNPolarity_Low //输出互补通道极性低电平TIM3没有互补通道,这个可以不设置(7)TIM_OCIdleState取值范围TIM_OCIdleState_Set //输出通道空闲电平高电平TIM_OCIdleState_Reset //输出通道空闲电平低电平TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set//输出通道空闲时电平为高电平定时器生成PWM的编程要点5、输出通道配置
(8)TIM_OCNIdleState取值范围TIM_OCNIdleState_Set //输出互补通道空闲电平高电平TIM_OCNIdleState_Reset //输出互补通道空闲电平低电平TIM3没有互补通道,这个可以不设置TIM_OC1Init(TIM3,&TIM_OCInitStructure); //使能通道1定时器生成PWM的编程要点6、PWM输出使能TIM_Cmd(TIM3,ENABLE);
//使能定时器3TIM_CtrlPWMOutputs(TIM1,ENABLE);
//使能定时器1PWM输出(仅适用于高级定时器)TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能通道1重载7、设置比较器值输出PWMTIM_SetCompare1(TIM_TypeDef*TIMx,uint32_tCompare1);例如:TIM_SetCompare1(TIM3,30); //设置比较器1值为30PWM输出端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1; //选择端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;//复用模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; //输出最大速度GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空模式GPIO_Init(GPIOB,&GPIO_InitStructure); 定时器配置TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Prescaler=84-1;//预分频系数TIM_TimeBaseStructure.TIM_Period=200
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 面向未来的学校科技教育基础设施建设
- 跨学科教学对学生创新能力的影响研究
- 科技辅助的小学英语听说读写教学新模式
- 跨文化背景下的客户服务沟通技巧
- 2025年西安电力高等专科学校高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年绍兴职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 2025年福建体育职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 教育领域巡察工作标准化流程解析
- 2025年骨质瓷金箔杯盘组项目可行性研究报告
- 2025年钉角机项目可行性研究报告
- SL+575-2012水利水电工程水土保持技术规范
- SYT 6968-2021 油气输送管道工程水平定向钻穿越设计规范-PDF解密
- 人美版初中美术知识点汇总八年级全册
- 2024年广东省高三一模高考英语试卷试题答案祥解(含作文范文)
- 迅雷网盘最最最全影视资源-持续更新7.26
- 普通话培训班合作协议书
- 《西方思想经典》课件
- 中医诊疗设备种类目录
- 如何构建高效课堂课件
- 徐金桂行政法与行政诉讼法新讲义
- GB/T 13234-2018用能单位节能量计算方法
评论
0/150
提交评论