硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2412|回复: 5
收起左侧

调试STM32F4xx的一些注意事项(hal库通用注意事项),欢迎大佬补充

[复制链接]

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-6-24 15:12:20 | 显示全部楼层 |阅读模式
1、如果使用hal库弱定义的hal_delay() ,滴答定时器中断优先级必须是最高
原因:摘抄指硬汉的bsp手册
如果在中断服务程序里面调用延迟函数 HAL_Delay 要特别注意,因为这个函数的时间基准是基于滴
答定时器或者其他通用定时器实现,实现方式是滴答定时器或者其他通用定时器里面做了个变量计数。
如此一来,结果是显而易见的,如果其他中断服务程序调用了此函数,且中断优先级高于滴答定时器,
会导致滴答定时器中断服务程序一直得不到执行,从而卡死在里面。所以滴答定时器的中断优先级一
定要比它们高



2、使用USB等外设时,需要用到PLL48CK分频出来的时钟,这个时钟必须保证是48Mhz的


3、外置晶振频率必须和 stm32f4xx_hal_conf.h 文件中的 HSE_VALUE 数值一致


4、.......(未完待续)

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-6-24 15:51:08 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2020-6-24 16:02:16 | 显示全部楼层
第一条加一句,任何HAL库的轮询模式函数,都不要在中断函数中调用。因为轮询模式函数经常调用HAL_Delay()
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2020-6-25 00:08:24 | 显示全部楼层
caicaptain2 发表于 2020-6-24 16:02
第一条加一句,任何HAL库的轮询模式函数,都不要在中断函数中调用。因为轮询模式函数经常调用HAL_Delay()

只要嘀嗒定时器的优先级最高就没有问题啊
回复

使用道具 举报

32

主题

264

回帖

365

积分

高级会员

积分
365
发表于 2020-6-26 02:24:43 | 显示全部楼层
dyhfaily 发表于 2020-6-25 00:08
只要嘀嗒定时器的优先级最高就没有问题啊

中断里调用延时函数,这种设计本来就不怎么好
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
 楼主| 发表于 2020-6-27 18:39:08 | 显示全部楼层
在水一方 发表于 2020-6-26 02:24
中断里调用延时函数,这种设计本来就不怎么好

这样是不好  但是起码不会死机  谁能保证每个程序员都不会这样写呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 23:23 , Processed in 0.252503 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表