AT32使用内核DWT寄存器设定延时时间

本示例详细介绍了如何利用AT32微控制器的DWT(Data Watchpoint Unit)寄存器设置精确的延时时间。适用于Cortex-M内核的AT32全系列芯片。提供了DWT初始化、微秒、毫秒和秒级别的延时函数,并给出了在AT-START-F403AV1.x实验板上的应用实例,通过LED翻转展示延时效果。代码基于AT32F403A的BSP V2.0.6开发,建议使用keil5进行编译和下载。
摘要由CSDN通过智能技术生成

AT32使用内核DWT寄存器设定延时时间

示例目的
本示例代码展示了如何使用 AT32 的内核 DWT 寄存器设定延时时间。与 SysTick 类似,使用 DWT也可以得到基于 Cortex-M 内核的精确延时。
注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要注意使用上的区别。
支持型号列表:
AT32 全系列
主要使用外设列表:
DWT(Cortex-M 内核)
GPIO
快速使用方法
硬件资源

  1. AT-START-F403A V1.x 实验板;
    在这里插入图片描述

软件资源

  1. 该 Demo 以 AT32F403A 为例,BSP 版本 AT32F403A_407_Firmware_Library_V2.0.6。
  2. 在 at32f403a_407_board.c 中,新增了 DWT 配置以支援 dwt_delay 延时函数设定:
     DWT 初始化函数 void dwt_delay_init(void);
     DWT 微秒延时函数 void dwt_delay_us(uint32_t nus);
     DWT 毫秒延时函数 void dwt_delay_ms(uint16_t nms);
     DWT 秒延时函数 void dwt_delay_sec(uint16_t sec);需要注意的是,240MHz 时 DWT 毫秒延时函数的参数只支持到 0x45EF (十进制 17895,已达到17sec),否则会产生溢出,超过 10s 的情况建议使用 DWT 秒延时函数。
  3. 本示例代码 main.c 中,每隔 500ms,LED2(红色)会使用 SysTick 翻转一次,LED4(绿色)会使用DWT 翻转一次,用以观测延时效果。
    注 : 所 有 project 都是基于 keil 5 而 建 立 , 若 用 户 需 要 在 其 他 编 译 环 境 上 使 用 , 请 参 考AT32xxx_Firmware_Library_V2.x.x\project\at_start_xxx\templates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可
    示例使用
  4. 打开\SourceCode\SC0080_SourceCode_V2.0.0\utilities\SC0080_Demo\mdk_v5\DWT.uvprojx源程序,编译后下载到实验板。
  5. 观察 LED2/LED4,验证程序效果。也可以使用逻辑分析仪或示波器抓取波形做进一步验证。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值