PWM输出遇到的问题

2019-08-13 18:46发布

本帖最后由 龙之谷 于 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
请问各位坛友,配置有问题吗,还是我其它地方的理解出现了偏差?求指教~~~~~



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-13 23:57
一个周期就中断一次,你设置的PWM周期是多少?自己去算就知道了
龙之谷
2楼-- · 2019-08-14 03:43
本帖最后由 龙之谷 于 2017-10-14 11:47 编辑

如有描述不清,请各位坛友指出,谢谢~~~~~
龙之谷
3楼-- · 2019-08-14 06:34
 精彩回答 2  元偷偷看……
龙之谷
4楼-- · 2019-08-14 09:12
结帖!
TIMx->SR读取值依然0x1f,直接中断中判断最低位,然后清零TIMx->SR,虽对其值为何是0X1F仍不明其因,亦暂且如此吧。

一周热门 更多>