新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2018-8-9
- 在线时间
- 3 小时
|
1金钱
STM32F407的定时器1,2,3,4,5,8都被用了现在有一个芯片需要硬延时来实现读写 可使用定时器9 定时时间不能精确到1us,希望看到的朋友多多帮忙。
void TIM9_Init_Query(void)
{
TIM_TimeBaseInitTypeDef TIME;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE);
TIME.TIM_Period=1;
TIME.TIM_Prescaler=1;
TIME.TIM_ClockDivision=0;
TIME.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM9,&TIME);
}
void _delay_us(u32 nTime)
{
u16 counter=nTime&0xffff;
TIM_Cmd(TIM9,ENABLE);
TIM_SetCounter(TIM9,counter);
while(counter>1)
{
counter=TIM_GetCounter(TIM9);
}
TIM_Cmd(TIM9,DISABLE);
}
|
最佳答案
查看完整内容[请看2#楼]
和你用哪个定时器无关。 1us,就是1M的频率, 定时器的中断服务函数,是无法做到这个1M的进入频率的,肯定会不准。 所以,你这样设置也是一样。
|