sunhao111 发表于 2020-11-17 11:21:32

stm32f303的延时程序

各位大神。最近用stm32f303进行ad采集,采集完需要延时1000ms,请教一下f3的延时程序怎么写,多谢了

lebment 发表于 2020-11-17 13:18:24

定时器

_sa 发表于 2020-11-18 11:07:34

定时器或者使用汇编延时
/*120Mhz时钟时,当ulCount为1时,函数耗时3个时钟,延时=3*1/120us=1/40us*/
/*
SystemCoreClock=120000000

us级延时,延时n微秒
userDelay(n*(SystemCoreClock/3000000));

ms级延时,延时n毫秒
userDelay(n*(SystemCoreClock/3000));

m级延时,延时n秒
userDelay(n*(SystemCoreClock/3));
*/
#if defined   (__CC_ARM) /*!< ARM Compiler */
__asm void userDelay(unsigned long ulCount)
{
    subs    r0, #1;
    bne   userDelay;
    bx      lr;
}
#elif defined ( __ICCARM__ ) /*!< IAR Compiler */
void userDelay(unsigned long ulCount)
{
    __asm("    subs    r0, #1\n"
       "    bne.n   userDelay\n"
       "    bx      lr");
}

#elif defined (__GNUC__) /*!< GNU Compiler */
void __attribute__((naked)) userDelay(unsigned long ulCount)
{
    __asm("    subs    r0, #1\n"
       "    bne   userDelay\n"
       "    bx      lr");
}

#elif defined(__TASKING__) /*!< TASKING Compiler */                           
/*无*/
#endif /* __CC_ARM */

发表于 2020-11-18 11:13:49

AD采集完成后1S后再继续采集吗?采集完成可以加停止标志位,记录ticks,等最新的ticks-记录ticks大于1s时,重新开启AD采集功能。

yklstudent-1794 发表于 2020-11-20 15:23:34

上RTOS系统,系统自带延时函数
页: [1]
查看完整版本: stm32f303的延时程序