OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2261|回复: 0

stm32pwm疑问中的TIM_OCMode_Toggle疑问

[复制链接]

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-11-4
在线时间
10 小时
发表于 2019-6-2 15:21:05 | 显示全部楼层 |阅读模式
大家好;
       在做pwm的时候发现一个现象,心存疑惑:
        TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;//目前TIM3的时钟是36m
        TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向下计数
        TIM_TimeBaseInitStruct.TIM_Period=72-1; //这个是预装载值arr ,也就是定时时间,一个时钟0.5us,向下计数值200就是定时0.1ms=10k
        TIM_TimeBaseInitStruct.TIM_Prescaler=72-1;//36m的时钟72分频=0.5mhz,这个就是psc
        //TIM_TimeBaseInitStruct.TIM_RepetitionCounter=//这个选项是高级定时器才会用到
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);//输出频率=定时器溢出周期的倒数
       
        //TIM_OCInitStruct.TIM_OCIdleState=//高级定时器才需要配置这个选项
        //TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//pwm模式1输出
        TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_Toggle;//TIM_OCMode_Toggle输出
        //TIM_OCInitStruct.TIM_OCNIdleState=//高级定时器才需要配置这个选项
        //TIM_OCInitStruct.TIM_OCNPolarity=//高级定时器才需要配置这个选项
        TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;//高电平有效
        //TIM_OCInitStruct.TIM_OutputNState=//高级定时器才需要配置这个选项
        TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//使能比较输出
        TIM_OCInitStruct.TIM_Pulse=2;//这个是ccr,占空比=ccr/arr,
        TIM_OC1Init(TIM3,&TIM_OCInitStruct);//TIM3的通道1-PA6

我的理解是这样的不知道对不对:
在 TIM_OCMode_PWM1模式下TIM_Period 这个是影响ARR寄存器会影响pwm的频率。TIM_Pulse这个是影响CCR寄存器,影响的是占空比
不过在TIM_OCMode_Toggle模式下,一旦ARR寄存器的值小于或等于CCR寄存器的值得时候,发现pwm波形就停止了,没有波形了。
我看芯片介绍是CCR《ARR寄存器,但是在这个TIM_OCMode_Toggle模式下CCR寄存器起到了什么作用?好像这个值已经不起作用,占空比是百分之50.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 05:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表