1.遇到的问题
9 p3 b3 a! c/ B7 W
$ Q/ u& r* j* N我使用的是STM32H747,在初始化后发现断电后并没有进入中断。最后查找到因为STM32H747是双核CPU,在HAL库源码中,有双核的宏定义将一些配置给屏蔽了,因为我只用到了单核,就把源码中的宏取消掉了,然后就可以正常进入中断了。使用不是双核的就不需要更改了。
, U1 @ p# u# W2 D, e, Z) d6 ~1 \2 Q( o& i2 n: U+ c& R
2.下面是PVD的程序2 \/ r* d5 T. r5 y
- S; H) l7 P) e, l- void PVD_Init(void)
: X& g2 X7 e7 a6 z; ]; K% g - {9 y$ F6 \: [1 D1 ]+ M
- PWR_PVDTypeDef sConfigPVD = {0};
H9 V; j0 _. O1 f9 J
7 e7 Z8 ?, l( |( x9 R4 {- sConfigPVD.PVDLevel = PWR_PVDLEVEL_6;
/ j1 M% b0 W. a' _9 o8 [ - sConfigPVD.Mode = PWR_PVD_MODE_IT_RISING;4 l! C) ?6 {$ l) J! w$ ]$ f5 F
- HAL_PWR_ConfigPVD(&sConfigPVD);
# c! L6 x" v3 N+ c1 _6 L( R - , d0 c$ b$ @- A( W
- HAL_NVIC_SetPriority(PVD_IRQn, 0, 0); /* 配置PVD中断优先级 */
; s- [+ d$ f Q2 T7 o4 T - HAL_NVIC_EnableIRQ(PVD_IRQn); /* 使能PVD中断 */) l% I7 H) p: [+ c Q% I1 f$ b9 y: D( B
- ; t. R: K% Y! d) m! p* F
- HAL_PWR_EnablePVD();5 H% C4 z0 P6 D% z% }
- }
; [" p* J: s9 M1 Q
- s& \7 j9 M+ T: o% E; J
9 D0 u. h# p" x! h$ v- /* PVD中断处理 */* r- C1 t& p% o/ i% ^+ \5 R1 s, o J u
- void PVD_AVD_IRQHandler(void)9 {: A/ q1 s& w
- {* U0 z; z) f% `# v/ I* d8 r
- HAL_PWR_PVD_IRQHandler(); a) L7 l. J5 \) X+ h0 ?
- }1 y, n6 k1 @( S
4 j5 G8 J- E: z3 V, l: r- L, w) r6 O: R- void HAL_PWR_PVDCallback(void)9 P+ f. N+ H! C/ c9 t. R
- {
# W, [ q1 c3 P" h3 Z1 C: _% _ - //增加自己需要在断电时候的处理5 _+ m0 d8 d+ {0 o* w7 H5 s
, @5 u$ f" l O7 ] I1 \- }; G b7 B! T( p* ]) V
复制代码
. }$ G ]" l$ F3 q4 T- R( y& W0 G0 K) N+ `' `2 j
|