下面的2个函数在
tiM3,TIM14,TIM16运行(定时功能)都没问题,但改用在TIM1的定时功能的话,整个程序不工作,查不出来原因
void TIM1_Init()
{
RCC->APB2ENR|=1<<11; //TIM1时钟使能
TIM1->ARR=24000; //定时500us
TIM1->PSC=0; //1分频(0+1)
TIM1->EGR = 0x01; //允许产生更新事件
TIM1->DIER|=1<<0; //允许更新中断
TIM1->DIER|=1<<6; //允许触发中断
TIM1->CR1|=0x01; //使能定时器1
NVIC->ISER[0]|=1<<13;
}
/***********************************
* 名称: TIM1_IRQHandler()
* 功能: TIM1溢出中断服务子程序
* 入口参数: 无
* 出口参数: 无
* 说明: 产生1K方波
************************************/
void TIM1_IRQHandler(void)
{
if(TIM1->SR&0X0001) //溢出中断
{
if((GPIOA->ODR&(1<<6))!=(1<<6)) PWM1_high;
else PWM1_low;
}
TIM1 ->SR&=~(1<<0); //清除中断标志位
}
void TIM1_Init()
{
RCC->APB2ENR|=1<<11; //TIM1时钟使能(一定在这里设置)
TIM1->ARR=24000; //定时500us
TIM1->PSC=0; //1分频(0+1)
TIM1->EGR = 0x01; //允许产生更新事件
TIM1->DIER|=1<<0; //允许更新中断
TIM1->DIER|=1<<6; //允许触发中断
TIM1->CR1|=0x01; //使能定时器1
NVIC->ISER[0]|=1<<13; //允许TIM1中断允许
TIM1->BDTR |=1<<15; //打开MOE
}
一周热门 更多>