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
    }
}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐