OpenEdv-开源电子网

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

PWM输出遇到的问题

[复制链接]

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2017-10-14 11:52:00 | 显示全部楼层 |阅读模式
18金钱
本帖最后由 龙之谷 于 2017-10-14 19:19 编辑

目的:计划输出PWM,并在更新中断中更改频率、占空比
平台:STM32F1
初始化配置:
[mw_shl_code=c,true]void DO1_PB8_TIM4_CH3(uint16_t arr, uint16_t psc)
{
        RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;
        RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
        GPIOB->CRH   &= 0XFFFFFFF0;
        GPIOB->CRH   |= 0X0000000B;
        TIM4->ARR     = arr;
        TIM4->PSC     = psc;
        TIM4->CCMR2  |= 6 << 4;
        TIM4->CCMR2  |= 1 << 3;
        TIM4->CCER   |= 1 << 8;
        TIM4->CR1     = 0X0080;        
        
        TIM4->DIER   |= (1 << 0);
        TIM4->CR1    |= 0X01;
        
        MY_NVIC_Init(2,3,TIM4_IRQn,2);
}[/mw_shl_code]

问题:不使能TIM4->DIER |= (1 << 0);更新中断,PWM输出正常,使能后能够进入中断,但是中断里面串口打印TIM4->SR的值很频繁,如下图
串口调试助手.PNG

上图中0X1F为TIM4->SR读取值,不应该是0X01吗?
TIM4->SR寄存器描述如下:
TIM4 SR.PNG
请问各位坛友,配置有问题吗,还是我其它地方的理解出现了偏差?求指教~~~~~



最佳答案

查看完整内容[请看2#楼]

一个周期就中断一次,你设置的PWM周期是多少?自己去算就知道了
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-10-14 11:52:01 | 显示全部楼层
一个周期就中断一次,你设置的PWM周期是多少?自己去算就知道了
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2017-10-14 11:52:01 | 显示全部楼层
本帖最后由 龙之谷 于 2017-10-14 11:47 编辑

如有描述不清,请各位坛友指出,谢谢~~~~~
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2017-10-15 11:22:10 | 显示全部楼层
正点原子 发表于 2017-10-15 00:32
一个周期就中断一次,你设置的PWM周期是多少?自己去算就知道了

谢原子哥指导
是的,每个周期进入一次中断
但进入中断后读取TIM->SR是0x1f,很奇怪,不应该是0X01吗
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
 楼主| 发表于 2017-10-18 18:31:29 | 显示全部楼层
结帖!
TIMx->SR读取值依然0x1f,直接中断中判断最低位,然后清零TIMx->SR,虽对其值为何是0X1F仍不明其因,亦暂且如此吧。
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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