一种使用systemtick 或者直接等待 /***************************************************************** * @brief * @param * @retval *******************************************************************/ void TimeDelay(__IO uint32_t nCount) { while(nCount--) { } } /** * @brief Inserts a delay time. * @param nTime: specifies the delay time length, in milliseconds. * @retval None */ void Delayms(__IO uint32_t nTime) { uwTimingDelay = nTime; while(uwTimingDelay != 0); } stm32程序不能延时执行函数,请问问题出在哪呢?谢谢。timer定时器中断函数贴出来看看,没看到你对time参数进行运算 stm32中Delay()函数延时的时间是怎么计算的首先取决于你的时钟频率选定为多少。 以24位的SysTick定时器为例,在3.5版本的库函数(该版本简化了对该计时器的配置函数)中,调用函数 SystemInit(); 初始化SysTick计时器为STM32主时钟的8分频,假设主频达到72MHz 则此时计时器的频率为9MHz,即1秒可 向下记数 9000000(9M)次。 f=9MHz,所以周期为T=1/f,即1/9000000。 再调用SysTick_Config(SystemCoreClock / X) (X表示一个数,填入多少就能获得 1/X 秒数) delay中调用这些便可实现精确计时。 例如 void Delay(vu32 count) { 全局变量A = count }; 然后再在stm32f10x_it.c 文件中的定义 void SysTick_Handler(void) { if(全局变量!=0) 全局变量--; } 就可以实现计时了。
|