管理员
  
- 积分
- 165537
- 金钱
- 165537
- 注册时间
- 2010-12-1
- 在线时间
- 2117 小时
|
发表于 2014-2-8 21:29:06
|
显示全部楼层
以寄存器版本代码:
//使能定时器2,使能中断.
void Timer2_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0;//TIM2时钟使能
TIM2->ARR=arr; //设定计数器自动重装值
TIM2-> SC=psc; //预分频器7200,得到10Khz的计数时钟
//这两个东东要同时设置才可以使用中断
TIM2->DIER|=1<<0; //允许更新中断
TIM2->DIER|=1<<6; //允许触发中断
TIM2->CR1|=0x01; //使能定时器2
MY_NVIC_Init(3,3,TIM2_IRQn,2);//抢占3,子优先级3,组2(组2中优先级最低的)
}
#endif
////////////////////////////////////////////////////////////////////////////////////////
//初始化串口控制器
//sysclk:系统时钟(Mhz)
void usmart_init(u8 sysclk)
{
#if USMART_ENTIMX_SCAN==1
Timer2_Init(1000,(u32)sysclk*100-1);//分频,时钟为10K ,100ms中断一次,注意,计数频率必须为10Khz,以和runtime单位(0.1ms)同步.
#endif
usmart_dev.sptype=1; //十六进制显示参数
}
系统时钟频率是72M
sysclk就是72.
那么传入Timer2_Init的PSC参数,就是7200-1=7199.
也就是7200分频.
那么72M的频率,7200分频后,是不是10Khz??? |
|