本帖最后由 龙之谷 于 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的值很频繁,如下图
上图中0X1F为TIM4->SR读取值,不应该是0X01吗?
TIM4->SR寄存器描述如下:
请问各位坛友,配置有问题吗,还是我其它地方的理解出现了偏差?求指教~~~~~
如有描述不清,请各位坛友指出,谢谢~~~~~
TIMx->SR读取值依然0x1f,直接中断中判断最低位,然后清零TIMx->SR,虽对其值为何是0X1F仍不明其因,亦暂且如此吧。
一周热门 更多>