news 2026/4/15 14:32:08

HC32L130精准延时实现指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HC32L130精准延时实现指南

HC32L130 基于 ARM Cortex-M0+ 内核,以下提供软件忙等延时(快速验证)SysTick 精准延时(推荐)两种经典实现,适配常用的 24MHz 系统主频(可根据实际主频调整)。

一、基础准备

需包含芯片寄存器头文件,确保工程已配置系统主频(示例为 24MHz):

#include "hc32l13x.h" /* 系统主频定义(根据实际配置修改,如16MHz/24MHz/32MHz) */ #define SYS_CLK_FREQ 24000000UL

二、软件忙等延时(简单但不精准)

适用于对延时精度要求不高的场景(如 LED 闪烁),需关闭编译器优化(或用volatile防止循环被优化)。

1. 微秒 (us) 软件延时
/** * @brief 软件延时微秒(基于24MHz主频,编译器优化-O0) * @param us: 延时微秒数(范围:1~65535) * @retval 无 */ void delay_us(uint16_t us) { /* 24MHz下,每个循环约1us(需根据实际主频/编译器调整循环次数) */ uint32_t ticks = (SYS_CLK_FREQ / 1000000UL) * us / 5; volatile uint32_t i; // volatile 防止编译器优化空循环 for (i = 0; i < ticks; i++) { __NOP(); // 空指令,占用1个时钟周期 } }
2. 毫秒 (ms) 软件延时
/** * @brief 软件延时毫秒 * @param ms: 延时毫秒数(范围:1~65535) * @retval 无 */ void delay_ms(uint16_t ms) { uint16_t i; for (i = 0; i < ms; i++) { delay_us(1000); // 调用1us延时,累计1ms } }

三、SysTick 精准延时(推荐)

利用 Cortex-M0+ 内核自带的 SysTick 定时器实现精准延时,不受编译器优化影响。

1. SysTick 初始化及延时核心函数
/** * @brief 初始化SysTick定时器 * @param 无 * @retval 无 */ void SysTick_Init(void) { /* SysTick时钟源选择内核时钟(SYS_CLK_FREQ),关闭SysTick中断 */ if (SysTick_Config(SYS_CLK_FREQ / 1000000UL)) { /* 初始化失败则死循环 */ while (1); } /* 关闭SysTick定时器(延时前手动开启) */ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; } /** * @brief SysTick精准延时微秒 * @param us: 延时微秒数(范围:1~1000000) * @retval 无 */ void delay_us_systick(uint32_t us) { uint32_t ticks = 0; uint32_t reload = 0; reload = SysTick->LOAD; // 保存SysTick重装值 ticks = reload + 1 - (SYS_CLK_FREQ / 1000000UL * us); // 计算目标计数值 SysTick->VAL = ticks; // 设置当前计数值 SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // 开启SysTick /* 等待计数到0 */ while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0); SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 关闭SysTick SysTick->VAL = 0; // 清空计数值 } /** * @brief SysTick精准延时毫秒 * @param ms: 延时毫秒数(范围:1~1000) * @retval 无 */ void delay_ms_systick(uint32_t ms) { uint32_t i; for (i = 0; i < ms; i++) { delay_us_systick(1000); // 累计1ms } }
2. 使用示例
int main(void) { /* 系统初始化(含主频配置) */ SystemInit(); /* 初始化SysTick */ SysTick_Init(); while (1) { /* 精准延时100ms */ delay_ms_systick(100); /* 精准延时500us */ delay_us_systick(500); /* LED翻转等操作 */ } }

四、关键注意事项

  1. 主频适配

    • 若系统主频不是 24MHz,需修改SYS_CLK_FREQ宏定义(如 16MHz 则改为16000000UL)。
    • 软件延时的循环次数需重新校准(可通过逻辑分析仪 / 示波器调整)。
  2. 编译器优化

    • 软件延时需将函数所在文件的编译优化等级设为-O0(无优化),或保留volatile关键字。
    • SysTick 延时不受优化影响,可正常开启编译器优化(如-O2)。
  3. 延时范围

    • 软件延时受变量类型限制,建议单次延时不超过 65535ms/us。
    • SysTick 延时需注意SysTick->LOAD最大值(24 位,即 16777215),24MHz 下最大单次延时约 699ms(16777215/24000000≈0.699s)。

五、使用建议

  • 快速验证、对精度无要求:使用软件延时。
  • 时序控制、精准延时(如通信协议:I2C/SPI/UART):使用 SysTick 精准延时。
  • 若需更长延时(如秒级),建议结合芯片定时器(如 TMR0/TMR1)实现,避免占用 CPU 资源。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 16:22:08

14、网络信息系统(NIS):原理、配置与应用详解

网络信息系统(NIS):原理、配置与应用详解 1. 引言 在局域网环境中,为用户提供透明的网络体验是一个重要目标。其中,确保关键数据(如用户账户信息)在所有主机间同步至关重要,这能让用户自由切换设备,无需记忆不同密码或复制数据。虽然域名系统(DNS)在互联网上用于特…

作者头像 李华
网站建设 2026/4/13 13:19:52

git迁移代码到其他仓库的方法 个人记录

克隆只包含指定分支的仓库 git clone --single-branch --branch <branch-name> <原仓库URL>如&#xff1a; git clone --single-branch --branch develop-重构1128 http://xxxllm_platform/test.gitcd <repo-directory>添加新的远程仓库 git remote add ne…

作者头像 李华
网站建设 2026/4/14 0:05:36

PPT排版又丑又慢怎么办?这个“AI生成PPT”功能,3秒拯救你的PPT

你是不是也遇到过这样的情况&#xff1a;明明内容都想好了&#xff0c;可一做PPT就头疼&#xff1f;调字体、对格式、找图片、排版面……折腾好几个小时&#xff0c;做出来的PPT还是不好看。更让人崩溃的是&#xff0c;有时候半夜还在改PPT格式&#xff0c;就为了第二天早上开会…

作者头像 李华
网站建设 2026/4/9 17:24:45

再次紧急修复,Flutter 针对 WebView 无法点击问题增加新的快速修复

前几天我们刚聊了 《Flutter 官方正式解决 WebView 在 iOS 26 上有点击问题》 &#xff0c;这是一个完整的底层重构修复&#xff0c;整个修复周期审核堪比“博士论文”&#xff0c;但是也带来了一个问题&#xff0c;它只修复了 Engine 和 Framework 层面问题&#xff0c;那插件…

作者头像 李华
网站建设 2026/4/12 22:35:50

给AI“考题”换个计分方式,谷歌SigLIP让多模态模型学得又快又好!

CLIP很强&#xff0c;但它也有“贵族病”&#xff1a;训练成本高得让人望而却步&#xff0c;动辄上千GPU天的算力让无数团队只能仰望。 直到SigLIP横空出世。 它用一个简单到近乎“暴力”的思想——Sigmoid Loss&#xff0c;把CLIP那套繁琐的InfoNCE损失彻底抛弃&#xff0c;…

作者头像 李华
网站建设 2026/4/12 10:15:46

2026年java找工作难吗?java就业环境怎么样?

2026年找工作会“难”&#xff0c;但不是对所有人。 它会呈现出非常明显的 “两极分化” 态势&#xff0c;对初级/基础不牢的求职者&#xff1a; 会非常困难&#xff0c;内卷严重&#xff0c;要求水涨船高。对中高级/有核心竞争力&#xff08;架构、高并发、云原生等&#xff0…

作者头像 李华