主频是64MHZ通过for循环写一个毫秒级延时
时间: 2023-08-10 14:00:29 浏览: 152
可以使用以下代码来实现毫秒级延时:
```c
#include <stdint.h>
// 定义主频为64MHz
#define SYS_CLOCK_HZ 64000000
// 延时毫秒数
void delay_ms(uint32_t milliseconds) {
// 计算循环次数
uint32_t cycles = SYS_CLOCK_HZ / 1000 * milliseconds;
// 执行延时
for (uint32_t i = 0; i < cycles; i++) {
// 空操作
__asm("nop");
}
}
```
使用上述代码,你可以调用 `delay_ms` 函数来实现毫秒级的延时。例如,要延时500毫秒,你可以这样调用函数:`delay_ms(500);`。请注意,该延时函数是近似的,实际延时可能会有一定的误差。
相关问题
51单片机主频12Mhz写一个延时1ms的延时函数
我们可以使用基于51单片机的软件定时器来实现1ms的延时,具体代码如下:delayms(unsigned int ms) //延时函数 { unsigned int i; while (ms--) { i=12000; //12MHz的主频,12000为1ms while(i--); } }
51单片机主频35Mhz写一个延时1ms的延时函数
可以使用以下的延时函数:void DelayMs(unsigned int Ms)
{
unsigned int i;
for(i=0;i<Ms;i++)
{
DelayUs(1000);
}
}