
鉴于各位大佬都熟悉STM32,我只是抛砖引玉LL库的性能也接近寄存器,很有实用价值,所以本贴只是探索LL库用来学习,各位大佬多多交流,大家的进步会更快。 这里就不介绍LL库的背景了,咱们直接上点灯。" T0 A0 j2 i+ S+ [ 硬件: STM32F030F4P6 板载的LED灯接PA44 ^7 F6 q% ~( g* S/ E 软件:CubeMX+IAR(V8.20) LL库版本V1.9.0 不多说,CubeMX不会用请看官方PDF,我直接贴图: ![]() ![]() 以下是主函数,其余的都未改动。 int main(void) {% m3 \9 M" ^1 @7 s" h! j /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ 5 A9 i2 u- p2 V" p) m /* MCU Configuration----------------------------------------------------------*/7 M% [* s/ D, z, L' ? /* Reset of all peripherals, Initializes the Flash interface and the Systick. */4 u( K: T }2 x; H) s% L LL_Init();$ N. S# |: A7 Q6 i4 [ /* USER CODE BEGIN Init */$ j9 w0 v- ^- x, ~9 y; l ! R9 Z" ~) Q8 ~' r' Z! S% B /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config();9 p( b% M) g# B7 c1 s B# t /* USER CODE BEGIN SysInit */6 {, T/ [4 p. h `& c1 z4 q 4 e' ~ `6 U9 C /* USER CODE END SysInit */ ; w$ l7 j1 u' F; Q. r$ `% C) l( G+ R( B /* Initialize all configured peripherals */ MX_GPIO_Init(); . `; w% X' x( s) b/ u( G. ]5 d /* USER CODE BEGIN 2 */ /* USER CODE END 2 */. k+ X. v3 S: c) m1 W# W+ } , Y% `! E8 L, K: f /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ X) E! s9 J4 \ b0 W /* USER CODE BEGIN 3 */7 J' I9 V8 [. v* v; r( D4 M5 d" q LL_mDelay(50);4 h/ F' F& A; q7 [4 a- p LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } /* USER CODE END 3 */% p' w( Q) k2 x7 Y6 k5 { } 你以为就这么完了吗-***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************-( B, K9 {* H/ O- Q/ q 并没有. Q( G/ ^% r4 ^8 O 本人发现一个问题:* B0 a7 H4 k% K0 w, { LL_mDelay(50);0 V6 p0 ?+ Q$ a$ x5 `/ C LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);这样是可以翻转的3 n: n$ j& u3 K7 R; J, n! b" p 如果改成 LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);//输出低电平1 i9 }2 I8 B( [, ]4 o LL_mDelay(50); LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平 并未发生翻转现象。 经过一翻摸索改为:- n/ W/ q1 X0 P# D: z8 Q LL_mDelay(25);2 M' h+ p2 {& a6 p3 h5 Q LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);//输出低电平 LL_mDelay(25); LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平6 h) q# i$ h9 _* ~ y * ~! ]; @% D- ] t$ X- @ 正常翻转,有没有大佬解释一下,本人不擅长寄存器,我对那些解答一些困惑的大佬表示十分感谢。 . Z$ ^2 k; q, \2 X; V) Q' N 看大家对此贴的讨论,再写出操作其它外设的代码。后续出PWM(已完成)的操作。有可能还有L4的帖子。谢谢大家支持我的一帖。5 Y0 {& O+ N9 N' P' n' g ) 5 v( V) n( |* d) u- i8 u7 z& o 继续阅读: STM32F0的LL库使用(二)' |0 G" A! J% X7 A* x. U STM32F0的LL库使用(三)! U7 Z& Y. [) U; o. A2 G7 _. R8 c |
LL_mDelay(50);8 h: Q2 U! ?+ F7 j7 U6 i
LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平
这是输出高电平后立马就又改成输出低电平,所以看不出来高电平了,要再加一个延时函数
评分
查看全部评分
正解
谢谢大佬
大佬,客气
这个是低级错误了