一、利用STM32CUBEMX生成工程框架- e8 W# q3 y! u" v3 L3 O 1.选择MCU ! S2 V( \5 G( m# ^0 P 8 y+ H* H. Y* @. W7 j: P 2.配置时钟 ( W9 n% ?) j4 Z& M: Y * h' H- d* U N8 k) R 3.配置GPIO 2 ^1 i l- S/ g8 ] 6 Z) T( a: `! r* {# K1 a) B3 U$ Z 4. 配置Project Manager( x1 M- x# A* u" |2 X& g' G% R g- ^+ w" P2 m: M& s z+ t7 z $ m; C8 i& _/ C- K% o 二、利用STM32CUBEMX生成初始化代码文件 5.打开工程文件8 }) z* Z5 N2 r& |- Y 0 [3 s( m$ w6 U ^! B, y. w7 J 9 x# i! ?' V# v. J, o. _) W 6.编译Keil代码--生成的框架是否有错误 4 o$ b! O) c; h1 j" l. m2 d + G0 F5 s0 f0 s) O! {% i" s6 q 7.按模块添加代码 ' B* ]2 _9 Y' p6 u* I+ j8 R 在gpio.c中添加代码 , j3 ~4 H6 q4 k) ?5 |% q 在gpio.h中声明函数 6 T$ N3 v" p; @ 在main.c中调用函数 8.配置Options $ G. q" F; \2 f6 r 三、测试代码0 ^. x$ G4 H, b 9.下载运行. K9 u( ~- }# C r; |6 `2 |3 m6 ^: Z+ [ 10.实验结果- a# h. {9 z( E C) ? (1)LED_TEST函数的结果* V7 J+ @/ T7 S5 p 0 E" e5 x& o* w$ ~, p (2)LED_Disp函数的结果 首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 - _9 k) a" u8 y7 T/ U. r 四、函数学习 想要学习哪个函数就直接右击去看函数定义即可。7 f% V- x6 B- t5 ]* E$ f3 B) c $ s; b7 { E2 k W 1 N- _ h, R$ |3 I (1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平 S0 s2 C' i0 N9 K7 T; F7 C 参数解释:: M: O* k6 F' Z; n, m/ V GPIO_TypeDef *GPIOx:x从A-G GPIO_Pin:可选项如下 ; {0 n% r* A; I2 F! h5 Y * q: W! Y u7 U/ i* C# X. S. i 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平$ `5 c% ^' u7 d# C 2 l2 d0 Q7 p$ c2 j (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入. B P: Z- l" g- L5 N. I 参数解释:前两个参数解释同上 0 y* s3 _8 L% [ a" Z6 [( h* k& R' K 第三个参数:GPIO_PinState PinState取值如下:! }+ D! N; y Y: r8 ^+ b o GPIO_PIN_RESET 低电平 GPIO_PIN_SET 高电平4 ]) C$ h1 m- n$ k & D/ v1 A5 F) O+ Q$ H5 d; V& J; L 五、问题总结- W& H( w/ e( m0 r# p 在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢? 解释: & Q6 M/ f- L* [2 L( _6 V0 }6 x 首先看一下LED灯的原理:% v% p: c: y" l p% [ 1 t8 u" x! f! i1 [ , R2 h/ D7 P' l! {1 }- R LED:当阳极电平>阴极电平时,LED导通发光 当PC8为高电平时灯才会亮," V" b0 H. J$ m 当PC8为低电平时灯就不会亮 , P6 [" o% t% ^. ~ 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制$ ]7 }+ S9 Z$ r/ o- l 因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态% Q3 C; U1 m: L4 b; U ————————————————6 _# Y' W6 r+ ?( J" k# } 版权声明:想要优秀点儿1 K1 \ u( _/ t/ G( f9 k, {+ B! Y' L * M" G0 d( y$ E/ D$ r# q |
STM32固件库分享,超全系列整理
【经验分享】STM32G4_CORDIC与定点带符号整数数据格式
STM32的CAN FD位定时设置注意事项
基于STM32G474 中 Triggered-half 模式的实现
基于STM32G4的数字控制 15kW双向PFC
基于STM32G431简介
今天14:00 | 基于STM32的MATLAB电机控制方案直播
基于STM32G474外红外接收经验分享
STM32G431RBT6之Key模块入门
STMG431RBT6之LCD模块