|
鉴于各位大佬都熟悉STM32,我只是抛砖引玉LL库的性能也接近寄存器,很有实用价值,所以本贴只是探索LL库用来学习,各位大佬多多交流,大家的进步会更快。0 p" \% r, [1 Y( C1 f: p 这里就不介绍LL库的背景了,咱们直接上点灯。 硬件: STM32F030F4P6 板载的LED灯接PA4 软件:CubeMX+IAR(V8.20) LL库版本V1.9.0 b: T( ^) g# y% v+ f& W- P6 |' y6 E4 v 不多说,CubeMX不会用请看官方PDF,我直接贴图:
以下是主函数,其余的都未改动。 int main(void)* k9 m+ S6 G) W5 | {) `/ @0 i5 c* U# O* z) h/ \ /* USER CODE BEGIN 1 */& t5 k1 o6 w% _' c! R. C 8 b) c+ \) L% @1 L8 y# a6 I# q; t /* USER CODE END 1 */ - v/ H9 `/ m* r /* MCU Configuration----------------------------------------------------------*/: z: z1 I, _0 K2 | 9 Z7 S0 z# N! R" L# m /* Reset of all peripherals, Initializes the Flash interface and the Systick. */$ V1 n& K' @/ b) w0 Y7 c9 Q LL_Init();0 K9 A: X1 q, ~8 r /* USER CODE BEGIN Init */ 2 J' u! O ]! x6 [& b /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); : D; F; n8 [7 e5 ^% e3 ^( P /* USER CODE BEGIN SysInit */ * o# i- o3 U1 \% |5 c W /* USER CODE END SysInit */( E& F0 P' i# O /* Initialize all configured peripherals */ MX_GPIO_Init();+ n5 v( c) G2 `3 ~; c /* USER CODE BEGIN 2 */5 ~- D0 f7 [7 D6 H0 ] /* USER CODE END 2 */ : G1 f9 G: s# @4 |- V /* Infinite loop */3 v% f0 j3 E q: X- B /* USER CODE BEGIN WHILE */3 u4 [6 o4 K; u0 V while (1)9 t V& r7 y; t5 u; M" a {/ u0 ]) o+ X6 s$ y6 d; ^* d /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */) d5 \% J+ q" C6 c% B& k0 Q# J3 i: C LL_mDelay(50);9 H2 X" q9 \+ P1 J LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } /* USER CODE END 3 */ }& X0 I; ^ ~; U3 s1 Y' ^ 你以为就这么完了吗-***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************- 并没有 本人发现一个问题: LL_mDelay(50); LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);这样是可以翻转的' s+ L9 u+ }4 q+ {% } 如果改成 LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);//输出低电平 LL_mDelay(50); LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平+ A7 G2 X6 _2 p. t 并未发生翻转现象。 经过一翻摸索改为: LL_mDelay(25);3 Z/ M7 O9 [0 q/ H, J; C LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);//输出低电平 LL_mDelay(25); LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平2 n# N* }6 |; r! M 正常翻转,有没有大佬解释一下,本人不擅长寄存器,我对那些解答一些困惑的大佬表示十分感谢。 : o6 R* e3 h3 v# G0 E 看大家对此贴的讨论,再写出操作其它外设的代码。后续出PWM(已完成)的操作。有可能还有L4的帖子。谢谢大家支持我的一帖。( G% e& \& v# o; T; N6 Z0 T$ N5 ^ ) 6 y3 W( L b; C- M' X e 继续阅读: STM32F0的LL库使用(二) STM32F0的LL库使用(三)# S" n: u0 _4 t0 @ |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
小白也能明白的STM32的低功耗与唤醒机制
STM32系统中2种数据掉电保护的方法
分享STM32F051中文参考手册(重制书签版)
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
STM32固件库分享,超全系列整理
STM32小白入门指南:从基础到OTA实现方案
STM32超详细学习笔记
新手必看!STM32单片机应该怎么学?
如果你解决了这些问题,就可以直接学STM32
微信公众号
手机版
LL_mDelay(50);
LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);//输出高电平, g8 S c: v4 T' G% Q
这是输出高电平后立马就又改成输出低电平,所以看不出来高电平了,要再加一个延时函数
评分
查看全部评分
正解
谢谢大佬
大佬,客气
这个是低级错误了