1 在STM32Cube中激活LPTIM
, \# c. f$ W% v& `" P% p: a
5 @% w- h0 N6 z( N# b; Q& i8 i* {
一.LPTIM超时产生中断详解
9 C9 Y3 M1 A$ s( Z6 U: H/ S, r使用的库函数为:1 W$ ~5 V- u$ k5 [" g
- HAL_StatusTypeDefHAL_LPTIM_TimeOut_Start_IT(LPTIM_HandleTypeDef *hlptim, uint32_t Period,uint32_t Timeout)
复制代码 定时时间的计算公式:
' Q+ T; }" T4 B3 M4 s; Z& F9 Y) m2 H- J. z$ j
- <p> /* Timeout = (Compare + 1) / LPTIM_Clock</p><p> _, |* W: D1 E) p: [+ u" M
- </p><p> Timeout = (Period + 1) / LPTIM_Clock</p>
复制代码 5 W& ?. J+ E; v6 u1 [3 l! L
LPTIM_Clock:低功耗定时器时钟:在CUBU软件中
6 k/ m' j. r# D$ p
% W" A, `9 |% Q/ Z1 Y
# G: q( C! V5 s, N1 J* @1 ^具体使用到哪一个时钟,就选这个时钟作为计算 例如:16Mhz8 J4 }! S ?( c" w3 S1 }
定时1s: 1s=( Period+1)/16000000
- \8 t. i$ f( g- m1 w使用的中断函数为:. E+ R H0 M9 f5 v/ M
- /**
3 b: Z# S! t) E" k3 v - / i `- D! h2 {
- *@brief Compare match callback in nonblocking mode
# g R- ?+ t- S6 J8 t+ p w - - {/ P2 d, `6 R! h* L& r) c
- *@param hlptim : LPTIM handle( b/ m1 W' `# v) R" d, S$ T# x7 h% a1 i
* v; u( Q0 ]0 a4 y3 o! a- *@retval None- e4 h+ g8 `$ d# @
3 e% V; D& c* {) O0 ~% D g) u- */
7 \# [/ U i, p6 H: `
& ^! }7 R6 X- }4 a" s4 u- void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef*hlptim)8 c/ l" X/ _8 k. v9 m+ b( J
- / \- _+ k; @8 `( t& b' V7 k4 i
- {
1 a9 P: E# o' N) K: j( c - /*Timeout was reached, turn on LED2 */
$ V: C( u9 Y9 P* X
8 i! @/ B- x2 d+ [" t2 R- //这里写中断服务函数
" h" i% I% {+ E, T6 m! Y4 _ - }
复制代码
. ^* {1 L& t; w1 a9 z6 M' |' m$ A3 O+ o% j) y& z9 F+ ?3 f3 ?6 n5 [2 U
$ K; g. j7 Y% [: T
|