历史上的今天
今天是:2025年08月05日(星期二)
2019年08月05日 | STM32 HAL库学习系列第3篇 常使用的几种延时方式
2019-08-05 来源:eefocus
1 自带的hal_delay 函数 毫秒级延迟
void HAL_Delay(__IO uint32_t Delay)
{
uint32_t tickstart = HAL_GetTick(); //获取tick值(毫秒)
uint32_t wait = Delay;
/* Add a period to guarantee minimum wait */
if (wait < HAL_MAX_DELAY)
{
wait++;//传参,延时的时间
}
while((HAL_GetTick() - tickstart) < wait)
{
}
}
也可以配置为us延时,改变函数参数
配置方法:也可以配置为1us
// HAL_RCC_GetHCLKFreq()/1000 1ms中断一次,即HAL_Delay函数延时基准为1ms
// HAL_RCC_GetHCLKFreq()/100000 10us中断一次,即HAL_Delay函数延时基准为10us
// HAL_RCC_GetHCLKFreq()/1000000 1us中断一次,即HAL_Delay函数延时基准为1us
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000); // 配置并启动系统滴答定时器
2 中断延时----利用定时器计时
int main(void)
{
HAL_Init();
SystemClock_Config();
LED_GPIO_Init();
/* 基本定时器初始化:1ms中断一次 */
BASIC_TIMx_Init();
/* 在中断模式下启动定时器 */
HAL_TIM_Base_Start_IT(&htimx);
while (1)
{
if(timer_count==1000)
{
timer_count=0;
LED1_TOGGLE;
}
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
timer_count++; //回调函数
}
3 优选方式------获取系统时钟计时,非阻塞式延时
void delay_ms(int32_t nms)
{
int32_t temp;
SysTick->LOAD = 8000*nms;
SysTick->VAL=0X00;//清空计数器
SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
do
{
temp=SysTick->CTRL;//读取当前倒计数值
}
while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
史海拾趣
|
发现了三个公司可以申请免费样片,www.maxim-ic.com, www.ti.com, www.analog.com 找申请样品栏目进入即可。 第一个最方便,我申请了个887,市场新的要二十多呢,两个就是40多,俄哈阿哈哈。 第二个也有步 ...… 查看全部问答> |
|
我有PDA设备是MC3000的,我用的是C#来做开发的,现在我遇到一个重大问题,数据同步不到PDA设备上,就是执行PULL时出错, 我估计是我的环境配置有问题,我的PC上已经装了sql server 2000 sp3的补丁,也装了sql ce 3.0 的程序,在IE里测试我的IIS是正确的,PD ...… 查看全部问答> |
|
在KEIL平台上编译UC/OS我有这样的一个困惑,我发现任务堆栈里保存的仅仅是CPU寄存器的状态和一些函数嵌套时的PC值还有就是函数嵌套时的一些传递参数的值,但是他并没有保存函数中的局部变量,这样的话 ...… 查看全部问答> |
|
本人毕设遇到了瓶颈,无奈导师太忙。故在此求助各位大虾~ 内容是可以通过对车流量的实时监测,绿灯的倒计时间可以实时更改,涉及到一个智能控制的问题。 在车流量监测方面最好用视频识别,不过有点困难,暂时用其他方法代替也可。 小弟现在问题 ...… 查看全部问答> |
|
之前用MDK3.5版本在LM3S1138上下载程序的时候,选Luminary Eval board下载程序成功了 现在换到MDK4.53版本,Flash config里面没有Luminary Eval board这个选项了,有人说选stellaris ICDI,于是选之,结果点了download提示说找不到Cortex-M Device ...… 查看全部问答> |
|
不急,网站 能够对 小白 买 简单的 集成电路 提供点建议? 总算安定了,有时间 玩键盘了发现 自己的动手能力 还是 急待提高的 买 简单的 集成电路 提供点建议?能够 在整体上 给个 意见?具体一点,比如 小白 见 MSP430 才20脚,想到 增加接口,找到 3线-8线 译码器 ,, 对应的 器件 74LS138 和 其他不同公 ...… 查看全部问答> |




