一、实验说明 实验平台:STM32F103RCT6 (正点原子mini板)' I8 N, r: k3 T9 ]' v9 o9 s 实验内容:使用GPIO 点亮LED ,使用按键控制LED灯。 使用IO口:led1 PD2,LED2 PA8 .(低电平点亮) 。按键 PC5 按下输入低电平。4 M. }5 {$ b5 G 二、实验操作5 o' W% f) h/ f7 |4 h 1、基础配置 1)sys中,选好调试方式,例如jtag-4pin。 2)RCC时钟,晶振选择。/ p) p) [, l' u; I: d$ g% K 3)时钟树配置。 ' b7 A! m$ a/ A/ s 4)中断分组配置。0 t, ^: z1 U, A: l$ ~. E # P) R. N ] l 以上步骤可以参考串口中断实验。2 p* l5 [" ~: J5 v0 o" I 2、外设配置—IO口配置 1)IO口基本配置。3 g6 e3 C7 n$ \. U+ t2 g + R) a9 l3 c% M4 q7 x ; e1 U4 J: U( E; V6 O1 N/ N' A # C+ ]# i( {3 ~6 c/ E $ ~' |& g D! M 如图配置PD2、PA8 为输出模式。7 E! G! ^- t. B) N- A ' q: ?8 ~8 g$ @ PC5 接的是按键所以配置为输入模式。5 O- f3 ? ^% y* \/ a j% [+ s1 q# A2 Q& {) b6 B% V 0 x, B0 {6 \% n- a4 o8 | 两个IO口接LED,配置为上图的参数。8 G0 A) b8 p! \" N " W) v) x; J l- f, [9 w) P ; T) n N- i2 U* N# g% r% g, r PC5配置为输入模式,上拉。(因为PC5一端接GND,一端接IO口) 4 z5 ~) ~. l& K" n: D9 @ 2)、生成代码" m* j5 m4 I% A$ u ' C. L2 Z' Z; [1 {, ~& _/ S 注意工程配置,和.c/.h 的添加。(串口中断实验有说明)) K4 T0 H8 l- h7 y9 G5 @ 3)、编写代码8 O7 P! F* H/ @+ E6 j3 P* V- L 9 l. D& k; p' T$ W } 在gpio.c中可以看到如下代码,就是GPIO的配置。" R, E( M# e! i& J k # s# h7 O6 D3 h% m+ a 然后我们在主函数中编写控制代码。 使用HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); 这个函数就可以操作IO口,让IO口输出高电平和低电平。: V0 p" f# F4 m# o8 t4 j$ z + P) ~' v. d9 X5 \* f 该函数有三个参数,1 B, X, o3 ?2 D; W D. U; k! y; v. Q2 [2 Q2 O( { 第一个是那组IO。 第二个是那个IO口。 ( F+ \7 E5 r# \! k, q 第三个是输出电平状态,GPIO_PIN_RESET为低,GPIO_PIN_SET为高。& X7 p1 h. P6 { ! d# C- n' v: \ K v% Y; G9 k 下一步读取按键,控制LED(PA8),按下灯亮,抬起灯灭。. U$ d1 o; `6 b: _7 F3 X- \$ M * f+ V8 m3 A6 h 使用,HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5) 函数判断io口的输入状态。 两个参数,一个是那组IO,另一个是那个IO口。+ t* `' j* G& k$ S2 f* i % K0 i0 A8 \; L 该函数会返回读取到输入的电平状态。7 d% V5 W! J& `( K - `7 c# {4 y5 I9 D) c' S4 h4 X HAL_Delay(),是HAL 库提供的ms级延时函数。这里起消抖作用。4 y5 e5 y! u W) l . D, n/ F' }0 o8 n" N0 |0 s 4 M6 L* |7 V2 w/ L# c" x |
基于STM32生成外部Flash Loader的方法经验分享
【经验分享】STM32驱动RC522读卡完整资料分享,包含原理图、PCB、驱动工程文件
【经验分享】HRTIMER 产生多相相移信号
基于STM32 DFSDM应用技术经验分享
基于STM32 快速入门 BlueNRG SDK 固件开发
基于STM32的BlueNRG 系列协处理器简介经验分享
获取编译时间作为版本号
【经验分享】STM32CubeIDE使用说明 —— 实时调试
宽禁带技术如何带来颠覆性变革
基于STM32的数据意外变化导致条件判断流程异常