news 2026/4/29 7:00:25

【GD32笔记】:P01 GD32F103C8T6 DWT的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【GD32笔记】:P01 GD32F103C8T6 DWT的使用

kernel_dwt.c

#include<stdint.h>#include"gd32f10x.h"/** *********************************************************** * @brief DWT初始化配置 * @param * @return *********************************************************** */voidDelayInit(void){/* 关闭 TRC */CoreDebug->DEMCR&=~CoreDebug_DEMCR_TRCENA_Msk;/* 打开 TRC */CoreDebug->DEMCR|=CoreDebug_DEMCR_TRCENA_Msk;/* 关闭计数功能 */DWT->CTRL&=~DWT_CTRL_CYCCNTENA_Msk;/* 打开计数功能 */DWT->CTRL|=DWT_CTRL_CYCCNTENA_Msk;/* 计数清零 */DWT->CYCCNT=0;}/** *********************************************************** * @brief 微秒级延时函数 * @param nUs,最大延时时间( 2^32 / 内核主频 ) * 10^6 us * @return *********************************************************** */voidDelayNus(uint32_t nUs){uint32_t tickStart=DWT->CYCCNT;/* 转换为nUs对应的时钟跳动次数*/nUs*=(rcu_clock_freq_get(CK_AHB)/1000000);/* 延时等待 */while((DWT->CYCCNT-tickStart)<nUs);}/** *********************************************************** * @brief 毫秒级延时函数 * @param nMs,延时时间n毫秒 * @return *********************************************************** */voidDelayNms(uint32_t nMs){for(uint32_t i=0;i<nMs;i++){DelayNus(1000);}}

kernel_dwt.h

#ifndef __KERNEL_DWT_H_ #define __KERNEL_DWT_H_ #include"stdint.h"/** *********************************************************** * @brief DWT初始化配置 * @param * @return *********************************************************** */voidDelayInit(void);/** *********************************************************** * @brief 微秒级延时函数 * @param nUs,最大延时时间( 2^32 / 内核主频 ) * 10^6 us * @return *********************************************************** */voidDelayNus(uint32_t nUs);/** *********************************************************** * @brief 毫秒级延时函数 * @param nMs,延时时间n毫秒 * @return *********************************************************** */voidDelayNms(uint32_t nMs);#endif

应用

#include"bsp_led.h"#include"kernel_dwt.h"#include"gd32f10x.h"#include"gd32f10x_libopt.h"voidHardware_Init(void){LED_Init();DelayInit();}intmain(void){Hardware_Init();while(1){LED_ON;DelayNms(500);LED_OFF;DelayNms(500);}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 6:59:19

如何排查SQL存储过程死锁_分析死锁日志与索引优化

SQL Server死锁日志中deadlock-list是根节点&#xff0c;每个deadlock元素对应一次死锁事件&#xff0c;需重点分析process-list中的spid和inputbuf、resource-list中的objectname及锁模式&#xff08;如S/X&#xff09;&#xff0c;并结合执行计划排查索引与事务设计问题。怎么…

作者头像 李华
网站建设 2026/4/29 6:59:17

设备全生命周期管理:TDengine 时序数据库在制造业资产管理中的应用

摘要本文探讨 TDengine 时序数据库在制造业设备全生命周期管理中的应用&#xff0c;涵盖设备采购、运行监控、维护保养到报废处置的完整数据链条。一、设备全生命周期管理的数据需求设备管理涉及多个阶段的数据&#xff1a;采购阶段&#xff1a;设备参数、供应商信息、验收数据…

作者头像 李华
网站建设 2026/4/29 6:57:33

如何解析HTTP请求中的完整URL

&#xff08;感觉自己距离成功越来越近了&#xff0c;原理什么的依旧看不懂&#xff0c;但好像知道怎么操作了&#xff09; 要查找被解析后的 HTTP 请求中的 URL&#xff0c;核心在于理解 HTTP 请求的结构、解析过程以及如何在不同层级&#xff08;如浏览器、服务器、网络工具…

作者头像 李华
网站建设 2026/4/29 6:54:29

拆解brpc的RDMA内存池:告别malloc,高效管理注册内存的奥秘

拆解brpc的RDMA内存池&#xff1a;告别malloc&#xff0c;高效管理注册内存的奥秘 在追求极致性能的分布式系统中&#xff0c;RDMA&#xff08;远程直接内存访问&#xff09;技术凭借其kernel bypass和零拷贝特性&#xff0c;已成为突破传统网络性能瓶颈的利器。然而&#xff0…

作者头像 李华
网站建设 2026/4/29 6:53:05

造相-Z-Image-Turbo 数据结构优化:提升大规模LoRA加载与管理效率

造相-Z-Image-Turbo 数据结构优化&#xff1a;提升大规模LoRA加载与管理效率 你有没有遇到过这样的烦恼&#xff1f;电脑里存了几十个甚至上百个不同风格的LoRA文件&#xff0c;想用的时候&#xff0c;光是找到对的那一个就得花上好几分钟。更头疼的是&#xff0c;每次启动AI绘…

作者头像 李华