论坛元老
 
- 积分
- 3347
- 金钱
- 3347
- 注册时间
- 2013-4-10
- 在线时间
- 333 小时
|
发表于 2016-2-26 17:37:34
|
显示全部楼层
本帖最后由 likunxue 于 2016-2-26 17:49 编辑
如你ARR的值是1000 , CNT的初始值, 根据计数方向,只能是 0或1000, 不可能是5000的
/********************************************************************************************
函数名: 设置TIM6初始化函数
调 用: TIM6_int();
参 数: 无
********************************************************************************************/
void MOTOR_TIM6_int(void)
{
RCC->APB1ENR|=1<<4; //TIM6时钟使能
TIM6->ARR = 10000-1; //设定计数器自动重装值(10ms中断一次)
TIM6->PSC = 36; //预分频器36,得到1MHZ的计数时钟
TIM6->DIER|=1<<0; //允许更新中断
MY_NVIC_Init(3,0,TIM6_IRQn,4); //抢占2,子优先级0,组4
BIT_ADDR((u32)& TIM6->SR,0) = 0; //清除中断标志
BIT_ADDR((u32)& TIM6->CR1,0)= 1; //开定时器
}
/********************************************************************************************
函 数 名: 定时器中断函数
调 用: 无
参 数: 无
返 回 值: 无
********************************************************************************************/
void TIM6_IRQHandler(void)
{
static u8 led_stut = 50; //LED 500ms变化一次
if(TIM6->SR & 0x0001) //检查是否是溢出中断以经发生过
{
BIT_ADDR((u32)& TIM6->SR,0) = 0; //清除中断标志
if(led_stut -- ==0)
{
led_stut = 50;
LED = ~ LED;
}
}
}
|
|