STM32 F407 用TIM9实现1us延时

2019-07-20 06:39发布

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条回答
正点原子
1楼-- · 2019-07-20 11:26
和你用哪个定时器无关。 1us,就是1M的频率, 定时器的中断服务函数,是无法做到这个1M的进入频率的,肯定会不准。 所以,你这样设置也是一样。
sdibt513
2楼-- · 2019-07-20 16:16
 精彩回答 2  元偷偷看……

一周热门 更多>