一、利用STM32CUBEMX生成工程框架! C2 ?, D5 J! x7 c& {, L+ y 1.选择MCU" W& b9 [, J$ o5 k: x # P" N# n, d U I2 m U- r * M5 S7 w7 f. I" t ^6 i7 T0 i2 r 2.配置时钟 ) Q; Z" R3 S/ t, C+ y 3.配置GPIO w, O( ~5 ~' l! }4 A3 l$ V2 O 4. 配置Project Manager . ^' d4 {. ^& l. ~ 2 k9 V+ S& k: `8 E6 Z d5 b 8 h; B, C4 e& Y8 G# u/ K- c 二、利用STM32CUBEMX生成初始化代码文件) p- D m0 }0 N: E# k( h, N& a. F 5.打开工程文件 ; D+ ^7 M W$ D7 h 6.编译Keil代码--生成的框架是否有错误 * R5 _& U/ U, K9 C. m 2 ~/ I4 x* k: {- c 7.按模块添加代码 i" W: _7 i0 Q! g 在gpio.c中添加代码: c ^8 L2 N7 w 8 v7 y% B4 i/ J " x% _0 K( L0 g, c Z 在gpio.h中声明函数0 K5 a& s( E, n2 t5 _ % Y+ T |( M# z% ~% H 在main.c中调用函数, T0 t2 {; i: |3 {5 m* x1 o1 ~ 8 m& r: w. t J# j 8.配置Options ; y5 Z& I! d& ` 三、测试代码 9.下载运行- r5 Q$ [! A7 F+ { . @4 G6 H: I. \, F' `6 M / T; g s" o: d 10.实验结果 (1)LED_TEST函数的结果" s- c4 a5 [( n5 N (2)LED_Disp函数的结果 首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 ) A. S( G1 y3 ~) E8 z4 \) B* z7 ?* { 四、函数学习 想要学习哪个函数就直接右击去看函数定义即可。 : v# L8 o8 C; o' z& a: _ , n7 W* ]! C. Z# d. M* e) z4 n5 u (1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平 5 c8 A3 b) ^+ E) A" y 参数解释: q7 n( q8 m( h1 k0 @8 o5 o" G GPIO_TypeDef *GPIOx:x从A-G( M* f: Q( I7 n$ S# V# p GPIO_Pin:可选项如下 5 R0 r/ V' {$ ?: G, M) t9 M% ` 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平 (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入 % J1 p4 D/ @4 Y0 ?+ F 参数解释:前两个参数解释同上1 r+ r! V j2 @5 H" Y! w 第三个参数:GPIO_PinState PinState取值如下:. z2 G: w/ z- ]; l! L# a7 h) k& f1 Q N2 @9 C; n8 w, { GPIO_PIN_RESET 低电平- Y( ?( d0 o8 U+ K( V GPIO_PIN_SET 高电平- w2 Y3 i. J& h! x6 e8 V6 Z C ! H* U: ~* W5 k. t. @ % S9 W4 r5 d4 Z. ]6 c0 U/ R+ M: f 五、问题总结* N6 i! @: z" o, I. T; B* g 在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?+ H8 ]2 e4 T+ I7 | " |9 M; R4 h, q: P% c5 j& r# J 解释: 首先看一下LED灯的原理:$ f9 V W2 B% X6 U8 U $ ^/ u* t( p/ t X LED:当阳极电平>阴极电平时,LED导通发光% p3 X$ n( X2 G 当PC8为高电平时灯才会亮, 当PC8为低电平时灯就不会亮. n8 c8 p! E# a 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制7 L5 F d! E% G* k- a9 [" }9 | & `5 j' _: _1 P% b; {( Q* ? 5 v* h7 g7 |: y2 X/ n' O 因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态 I! a# o% M) [ ————————————————/ Z8 S7 W# W. T5 q; Z 版权声明:想要优秀点儿8 [5 J4 B. m b! F. w& H! G8 x7 s |
STM32固件库分享,超全系列整理
【经验分享】STM32G4_CORDIC与定点带符号整数数据格式
STM32的CAN FD位定时设置注意事项
基于STM32G474 中 Triggered-half 模式的实现
基于STM32G4的数字控制 15kW双向PFC
基于STM32G431简介
今天14:00 | 基于STM32的MATLAB电机控制方案直播
基于STM32G474外红外接收经验分享
STM32G431RBT6之Key模块入门
STMG431RBT6之LCD模块