打印
[应用相关]

stm32单片机难点总结

[复制链接]
807|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
averyleigh|  楼主 | 2024-11-20 23:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先看时钟树clock tree。主要看外部时钟怎么倍频上去的。
学中断。看《arm cortexm3权威指南》。中断优先级只需要抢占优先级。因为RTOS是抢占的。
stm32的中断和事件在一起讲的。跳过事件,只看EXIT中断。这里事件只是在休眠唤醒用得到,其它很少。另外EXIT中断对应的GPIO是一一对应的,GPIOx_0只能对应EXIT0。
定时器看systick。因为RTOS要用。
软件hal库方面,就是回调函数。学习C指针。
外设方面,注意外设的时钟是否打开,外设中断是否是能,对应的nvic中断是否使能。
备份寄存器可以看一下,可以在复位前保存数据。
其它的外设都很简单。

使用特权

评论回复
沙发
tpgf| | 2024-12-2 12:17 | 只看该作者
STM32的中断系统功能强大但复杂。它支持多个中断源和优先级设置,开发者需要仔细规划和管理中断,以确保系统的实时性和稳定性

使用特权

评论回复
板凳
磨砂| | 2024-12-2 19:22 | 只看该作者
STM32的时钟系统是其一个显著的特点,同时也是一个难点。它包含了多个时钟源(如HSI、HSE、PLL等),以及复杂的时钟树结构

使用特权

评论回复
地板
晓伍| | 2024-12-2 20:33 | 只看该作者
STM32系列单片机拥有丰富的外设接口,如GPIO、USART、SPI、I2C、ADC、DAC等。每个外设都有其特定的配置和使用方式,开发者需要熟悉这些外设的工作原理和编程方法,才能有效地利用它们实现各种功能。

使用特权

评论回复
5
八层楼| | 2024-12-2 21:41 | 只看该作者
STM32单片机具有多种低功耗模式,如睡眠模式、停止模式和待机模式。理解和正确配置这些低功耗模式对于延长电池寿命至关重要

使用特权

评论回复
6
观海| | 2024-12-2 22:15 | 只看该作者
虽然STM32提供了库函数来简化寄存器的配置过程,但直接操作寄存器可以提供更高的灵活性和效率

使用特权

评论回复
7
guanjiaer| | 2024-12-2 23:37 | 只看该作者
开发者不仅熟悉STM32的开发环境,还要了解实时操作系统的原理和编程方法

使用特权

评论回复
8
公羊子丹| | 2025-3-15 07:49 | 只看该作者
时钟树确实很关键,尤其是主频、PLL 倍频和 APB 分频的关系,不搞清楚的话容易踩坑。

使用特权

评论回复
9
周半梅| | 2025-3-15 07:50 | 只看该作者
EXINT 和 GPIO 绑定这一点确实要注意,EXTI0 只能对应 Px0,想用多个 GPIO 触发同一个 EXTI 需要巧妙的设计。

使用特权

评论回复
10
Wordsworth| | 2025-3-15 07:52 | 只看该作者
STM32 低功耗模式下备份寄存器很实用,掉电后还能保存关键数据,比 EEPROM 读写快很多。

使用特权

评论回复
11
Bblythe| | 2025-3-15 07:53 | 只看该作者
你提到 HAL 库要学习 C 指针,这点很关键,特别是 __weak 关键字修饰的回调函数。

使用特权

评论回复
12
Pulitzer| | 2025-3-15 07:54 | 只看该作者
其实事件在低功耗应用里还是有用的,比如 WFE 指令可以降低功耗并等待事件触发唤醒。

使用特权

评论回复
13
帛灿灿| | 2025-3-15 07:55 | 只看该作者
Systick 作为 RTOS 的心跳定时器是核心之一,但如果需要低功耗,可能要考虑用 LPTIM 代替。

使用特权

评论回复
14
Uriah| | 2025-3-15 07:56 | 只看该作者
除了 HAL,有些项目会直接用 LL 库或者裸寄存器操作,你会考虑这方面的优化吗?

使用特权

评论回复
15
Clyde011| | 2025-3-15 07:58 | 只看该作者
RTOS 用的 Systick 也可以被 TIM 替代,特别是在高精度任务调度或者低功耗应用场景下。

使用特权

评论回复
16
童雨竹| | 2025-3-15 07:59 | 只看该作者
HAL 库的回调机制确实很重要,很多外设都是通过回调完成的,比如 UART 的 HAL_UART_RxCpltCallback()。

使用特权

评论回复
17
万图| | 2025-3-15 08:00 | 只看该作者
NVIC 的中断优先级配置有时候挺坑的,特别是 __NVIC_SetPriorityGrouping() 需要理解清楚。

使用特权

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

本版积分规则

23

主题

1367

帖子

3

粉丝