1 在STM32Cube中激活LPTIM: d1 p+ f: T8 u- s0 K3 R. g
. [/ T! c% M( ^- E: o/ x) N' V6 o* ^7 m( W+ K3 j
一.LPTIM超时产生中断详解' i$ `3 c5 I `; a
使用的库函数为:
6 X' _, x4 C3 K3 a0 \- X4 o& Z- HAL_StatusTypeDefHAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period,uint32_t Timeout)
复制代码 定时时间的计算公式:5 t' I- F# Z& _2 n' Q- L8 I
# m+ N4 v6 O1 L' S7 G- <p> /* Timeout = (Compare + 1) / LPTIM_Clock</p><p>
0 B6 @; \4 r1 S/ b: y) m - </p><p> Timeout = (Period + 1) / LPTIM_Clock</p>
复制代码
- }# S/ C) Y+ c, V4 xLPTIM_Clock:低功耗定时器时钟:在CUBU软件中! z( H& m" [. Y. n) n
" n2 ~" @* A+ \' U. n g1 ^' @
. W9 Y$ H- y1 R+ _ z! J7 ]具体使用到哪一个时钟,就选这个时钟作为计算 例如:16Mhz
) U$ C( X7 J1 X y+ Z' D, e6 k定时1s: 1s=( Period+1)/16000000
, b& j" P% k/ ~$ | {使用的中断函数为:
& K7 w) [" w W& |7 b7 G- /**
( X1 Y( d1 g5 p5 E1 K/ i0 h - * Z1 {* c2 a$ ^' m4 r2 \+ A, M& S
- *@brief Compare match callback in nonblocking mode9 n0 s+ E+ ^( Z2 I- ?/ c
- - s# F6 ]& L/ Z$ O/ ]
- *@param hlptim : LPTIM handle' ?* i6 U8 g& ] w+ j# n
- + J: K' K' `4 P4 e& A3 o
- *@retval None4 K9 p* P- `& ^* T9 C' r9 J
. y) t# X) _' |4 e1 W$ \- */
+ R. R: q! a/ I - 9 s: p1 m. L; L' @8 @
- void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef*hlptim)
& [% R1 _) ?$ j. w# ^
% g- X' ~$ I ]* V( m0 ^- {
% s- i( p T* F2 j - /*Timeout was reached, turn on LED2 *// s" [) h) F& U2 N% V
- ( R8 A; N6 B" l- n* _: {+ C
- //这里写中断服务函数$ V/ j$ ]0 d% r4 s* i% M( n r
- }
复制代码 - f9 n2 h$ \" @1 T( v
/ K: a5 S: `# j- v, Y. m- @, U
/ z& Y: V3 D, G( \ |