一、利用STM32CUBEMX生成工程框架3 r+ @* E( g; T3 ^: M 1.选择MCU $ b: s+ g* D' z" e" t / a X+ Q0 x1 H3 @( N; H" }5 a5 i 2.配置时钟" ~" `- q- t/ r. X 3.配置GPIO" C* h3 _- A- ~8 I% J " U6 {: j6 u: o& L5 G3 ?; e% c 4. 配置Project Manager; z) m, b. o# C& j 3 o$ x- `# k# _3 _' v1 z 1 P. v+ S& G0 c' x5 Q 二、利用STM32CUBEMX生成初始化代码文件 5.打开工程文件( Z$ @2 l9 C% x& H$ S2 C & `( M' b0 S# y* U J % ~" y$ ~; B* S: A 6.编译Keil代码--生成的框架是否有错误 7.按模块添加代码 在gpio.c中添加代码2 }$ `0 f( a; i1 V; l1 p & J# H/ x/ _9 P 5 |9 s0 q8 H& u 在gpio.h中声明函数 在main.c中调用函数 2 |( V( M% q9 U4 o, d9 d 8.配置Options! `! |: ]1 Y# |% P6 \ i' L1 w' u $ q4 y7 T. h. P6 s! R, z 三、测试代码& P6 @- C) g3 a, F* C 9.下载运行 + b" h8 I4 [. P8 O 10.实验结果 (1)LED_TEST函数的结果3 F& A& M. R/ m! t : N. P) R% e0 } (2)LED_Disp函数的结果: v7 k) p4 u& g# [( ]% G' w 首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 : M' `7 P {$ y7 \& a" b 8 P" Z5 P# \% A1 t 四、函数学习 想要学习哪个函数就直接右击去看函数定义即可。$ N* E, I- L9 X! y* N7 p' t * ?8 k9 @3 H: C+ b. M* P (1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平 参数解释: GPIO_TypeDef *GPIOx:x从A-G GPIO_Pin:可选项如下' U4 P8 y$ l& c% D: ^; v$ j) S6 f $ R! ~" `' d0 j4 M7 n 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平 (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入! V* Y# V$ Z% r& w) l: ^ * l) T5 ]# c/ V" K2 Q& Y# Z 参数解释:前两个参数解释同上7 `! \2 R# S" }& X1 E7 G5 d 4 `2 p" `6 U! u& h$ B; y4 Q6 ~ 第三个参数:GPIO_PinState PinState取值如下:6 `) }! }0 A6 [ ; z* y- `# t8 M+ W, l7 `+ r GPIO_PIN_RESET 低电平 GPIO_PIN_SET 高电平 五、问题总结 {8 _$ w9 E' _+ _# Z) L* N- ] 在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?9 t5 J$ G0 R' u q& K4 k6 p! |- x 解释: D s5 L% Y0 ?# ]: J6 E! j% N [( M 首先看一下LED灯的原理:/ D/ ~1 @+ J" z. g8 J 6 H9 @6 v6 s& K$ a) } ! W% D! R1 K7 G LED:当阳极电平>阴极电平时,LED导通发光 当PC8为高电平时灯才会亮,/ L- O! b8 e& |: z8 q2 o* B; i3 u) e3 u- v 当PC8为低电平时灯就不会亮+ p8 N1 c4 ^7 Q. D! T: S8 O4 p* T 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制 * P. c" z+ g6 e: R. i8 Y: ~. ~ ' I5 L3 i/ o7 A5 G. O8 ] 因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态 ————————————————& M: g, W, H8 a; S& \ a0 U 版权声明:想要优秀点儿5 A5 O- u& y$ W& @( s0 z 8 g0 S' t1 u$ P2 S |
STM32固件库分享,超全系列整理
【经验分享】STM32G4_CORDIC与定点带符号整数数据格式
STM32的CAN FD位定时设置注意事项
基于STM32G474 中 Triggered-half 模式的实现
基于STM32G4的数字控制 15kW双向PFC
基于STM32G431简介
今天14:00 | 基于STM32的MATLAB电机控制方案直播
基于STM32G474外红外接收经验分享
STM32G431RBT6之Key模块入门
STMG431RBT6之LCD模块