打印
[应用相关]

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

[复制链接]
521|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 tanleitanlei 于 2022-7-19 20:17 编辑

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)进行简单修改即可
示例使用
1) 打开\SourceCode\SC0080_SourceCode_V2.0.0\utilities\SC0080_Demo\mdk_v5\DWT.uvprojx源程序,编译后下载到实验板。
2) 观察 LED2/LED4,验证程序效果。也可以使用逻辑分析仪或示波器抓取波形做进一步验证。



SC0080_AT32_MCU_Using_DWT_as_Delay_Time_V2.0.0.zip

681.06 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

74

帖子

1

粉丝