当前位置: 首页 > news >正文

【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);}}
http://www.jsqmd.com/news/717891/

相关文章:

  • SOCD Cleaner终极指南:键盘输入冲突解决方案,4种模式提升游戏操作精度
  • 英语副词进阶版
  • SeqGPT-560M从零开始:无需标注数据的中文文本理解模型完整指南
  • 网页视频本地化:VideoDownloadHelper如何重塑你的内容获取体验
  • C++ 智能指针代码解析
  • VS Code MCP生态冷启动避坑图谱:从零搭建可商用MCP服务栈的6个关键决策点(含架构选型矩阵)
  • NEURAL MASK 学术写作助手:自动生成论文中的技术示意图与图表
  • Banana Pi BPI-F4工业级边缘AI开发板解析与应用
  • 提示的错误为Saving Environment to FAT ... Unable to use mmc 0:1... Failed(1)
  • 什么样的人,才算真正的 AI 产品评测专家?
  • 从零开始:HS2-HF_Patch游戏增强补丁完全配置指南
  • QueryWrapper和LambdaQueryWrapper
  • 5步解锁免费VIP音乐体验:MoeKoeMusic跨平台播放器完全指南
  • MedGemma X-Ray 快速入门:小白也能用的医疗影像AI助手
  • TradingView Lightweight Charts:5分钟构建高性能金融图表应用
  • ITSS 项目服务经理:报考条件 + 报考全流程
  • Embedding 学习笔记
  • Si826x数字隔离门驱动器:工业电机控制的高效解决方案
  • Kubernetes攻防 特殊路径挂载导致的容器逃逸
  • 《池上》唐·白居易
  • Linux系统下的深度学习环境配置:从入门到精通
  • 启动mysql失败/usr/libexec/mysqld: Operation not permitted
  • 零基础玩转Qwen2.5-VL-7B:RTX 4090专属视觉助手,开箱即用图文交互
  • Python + FastAPI+ uniapp 健身房预约系统
  • 图形验证码的技术原理与应用场景深度解析
  • OpenClaw 安全复盘:“龙虾”漏洞到底发生了什么?
  • 2026年国内数字化档案管理系统Top5推荐
  • 别再为水下AI发愁了!手把手教你用虎鲸开源的UATD声呐数据集(含10类目标、9200张图)
  • 3步搭建零成本眼动追踪系统:eyeLike开源项目完全指南
  • Pixel Aurora Engine 模拟电路设计辅助:Proteus仿真图智能生成案例