中微芯片SC8P052,软件延时函数,模拟的会有误差的
本文介绍了两种基于循环实现的精确延时函数。微秒级延时函数Delay_us()通过嵌套循环和空操作指令实现,循环次数针对16MHz时钟优化,包含看门狗清除功能。毫秒级延时函数Delay_ms()基于微秒延时实现,每毫秒调用64次微秒延时。两种函数均采用软件循环方式,精度受编译器优化影响,适用于嵌入式系统的时间控制需求。
·
1.微秒级延时函数
/**
* @brief 微秒级延时函数
* @param us 延时的微秒数
* @note 基于软件循环实现,精度受编译器优化影响
*/
void Delay_us(uint16_t us)
{
for(uint16_t i = 0; i < us; i++)
{
for(uint8_t j = 0; j < 7; j++) // 根据16MHz时钟调整循环次数
{
asm("nop"); // 空操作指令
}
asm("clrwdt");//清除看门狗
}
}
2.毫秒级延时函数
/**
* @brief 毫秒级延时函数
* @param ms 延时的毫秒数
* @note 基于微秒延时函数实现
*/
void Delay_ms(uint16_t ms)
{
for(uint16_t i = 0; i < ms; i++)
{
Delay_us(64); // 1ms
}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)