|
分享一个我以前在原子的论坛发的贴:1 Q+ Y) ], G- u3 @, z 在学习和使用STM32F103系列MCU中,研究了一下CM3手册,发现调试组件中有对CPU时钟进行计数的功能(CYCCNT),如下图: * i3 {+ v& e& D8 v J6 D8 _5 N m* G# d9 M 9 Z" a5 R+ [9 F9 g7 F5 } 因而可以利用它进行延时。代码如下: 6 t5 G9 q3 C5 G #define DWT_CR *(volatile u32 *)0xE00010008 s( _# Z7 h; z& i d9 D& ] #define DWT_CYCCNT *(volatile u32 *)0xE00010042 J* {" S! `/ U4 `7 { #define DEM_CR *(volatile u32 *)0xE000EDFC #define DBGMCU_CR *(volatile u32 *)0xE0042004- T, M7 j* c6 ^: K& ~) O #define DEM_CR_TRCENA (1 |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版
RE:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时
回复:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时
RE:【MCU实战经验】STM32F103不占用定时器(包括SysTick)实现精确延时
精确到ms,也可以用来产生1s的间隔。
#include "stm32f10x.h"
#include "usart1.h"' x) o a9 M9 t7 W1 h, U
#include "DWT_Delay.h"
6 H! p# R' n% v. ?( v! o" _
/*
* 函数名:main
* 描述 :主函数
* 输入 :无2 @$ T) t1 I$ N, ]* L
* 输出 :无
*/" `$ J) C2 `1 w$ [' M5 s
int main(void). G; h3 `; U* J5 D2 W
{
int i=0;& j/ A2 c: k5 F; v7 w' T! P: T; G
int j;
/* USART1 config 115200 8-N-1 */
USART1_Config();
DelayInit(SystemCoreClock);# O% u' V* o1 v! z# m1 d
for(j=0;j<20;j++)
{ q: d* H& E2 v$ S& y! X+ R2 m
printf("%d",i);% e! o# ~3 w' w1 }/ ~
printf("\r\n");. ^% [8 a/ k- h8 K8 `
Delayms(1000);
i=i+1;( p/ h+ K6 h8 Q5 ]2 v6 J
}
https://www.stmcu.org.cn/module/ ... read&tid=598792# J2 x! H" y+ K7 E
天天小宇---------------[原创] 【经验分享】STM32中实用的精确延时方法