打印
[STM32F1]

stm32软件延时函数

[复制链接]
140|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zerorobert|  楼主 | 2023-3-30 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一种使用systemtick 或者直接等待
/*****************************************************************
* @brief
* @param
* @retval
*******************************************************************/
void TimeDelay(__IO uint32_t nCount)
{
while(nCount--) {
}
}
/**
* @brief Inserts a delay time.
* @param nTime: specifies the delay time length, in milliseconds.
* @retval None
*/
void Delayms(__IO uint32_t nTime)
{
uwTimingDelay = nTime;
while(uwTimingDelay != 0);
}
stm32程序不能延时执行函数,请问问题出在哪呢?谢谢。
timer定时器中断函数贴出来看看,没看到你对time参数进行运算
stm32中Delay()函数延时的时间是怎么计算的
首先取决于你的时钟频率选定为多少。
以24位的SysTick定时器为例,在3.5版本的库函数(该版本简化了对该计时器的配置函数)中,调用函数 SystemInit(); 初始化SysTick计时器为STM32主时钟的8分频,假设主频达到72MHz
则此时计时器的频率为9MHz,即1秒可 向下记数 9000000(9M)次。
f=9MHz,所以周期为T=1/f,即1/9000000。
再调用SysTick_Config(SystemCoreClock / X) (X表示一个数,填入多少就能获得 1/X 秒数)
delay中调用这些便可实现精确计时。
例如
void Delay(vu32 count)
{ 全局变量A = count };
然后再在stm32f10x_it.c 文件中的定义
void SysTick_Handler(void)
{
if(全局变量!=0)
全局变量--;
}
就可以实现计时了。

使用特权

评论回复
沙发
Uriah| | 2024-2-5 07:15 | 只看该作者

这些电流环路的布线

使用特权

评论回复
板凳
Uriah| | 2024-2-5 07:15 | 只看该作者

这些电流环路的布线

使用特权

评论回复
地板
帛灿灿| | 2024-2-5 09:11 | 只看该作者

所有开关电源设计

使用特权

评论回复
5
周半梅| | 2024-2-5 12:10 | 只看该作者

主从定时器门控的方式

使用特权

评论回复
6
Pulitzer| | 2024-2-5 13:13 | 只看该作者

在主要开关电源拓扑中主要的电流环路

使用特权

评论回复
7
童雨竹| | 2024-2-5 15:09 | 只看该作者

当PWM频率较高时,频繁的中断将影响程序运行的效率

使用特权

评论回复
8
Clyde011| | 2024-2-5 17:15 | 只看该作者

布置PCB的时候,电源地的安排要十分小心

使用特权

评论回复
9
公羊子丹| | 2024-2-5 18:08 | 只看该作者

输出了5个频率为10KHz的PWM脉冲

使用特权

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

本版积分规则

20

主题

1293

帖子

0

粉丝