野火STM32电机系列(一)Cubemx配置GPIO

tip :第一个项目作为主要文件,后续的功能主要是用Cubemx生成代码然后移植到电机控制的项目中。

1 工程建立

可以直接翻野火的资料,这里为了配合骄阳的板子进行配置

1.1 创建工程如下图

2438ecbb317a4a0b9fc389d836d5b502.png311442bebdd94cce90ecd5b4222b9a0b.png

 76efd47f32b441fa9d2145b265a6a52d.png

ff5aef940cb74eee8c424626e9025a1a.png

 1.2 GPIO口

按键(GPIO输入按下为高电平)引脚为

SW7/RESET

KEY1/SW2=PA0

KEY2/SW3=PG2

KEY3/SW3=PC13

KEY4/SW4=PG3

KEY5/SW5=PG4

29a3f44619d74aba94ecfc9d43657d13.png

电灯(GPIO输出高电平有效)引脚为

LED1=PA15

LED2=PE2

LED3=PG15

LED4=PB8

25e77fe8f00e4da085bb2cca1dbcd6e9.png

 挨个对GPIO进行配置,按键选output,led选input

0203dc87868849839aa7e7c65ce53a68.png

下面这里LED要改(高电平推挽上拉高速模式)

7570d10f181b4449836267bb29809321.png

1.3 时钟及其他配置 

0249d5587f0f4ee09510022795a1357c.png

241cf49671104cfe8116dcf02bd486db.png

 这里配置为个人习惯b731901ac5624645a262205c881f123c.png

 e79e5f2f17a1486986453b8f54639999.png

 点击生成代码

2 工程验证

简单配置一下仿真器,试试能不能烧进去

a6d7a0894ce64c46815a1298bbbfe914.png

 8bde6c3275b844d5bb9541647fde122d.png

3 功能函数添加

1.添加函数,判断按键是否按下以及点亮和熄灭LED灯

2.主函数用按键点亮LED灯测试配置和函数功能

3.最后整理一下代码

具体代码如下

//根据输入数字点亮对应LED灯
void LED_ON(unsigned char c)
{
	if(c==1)
	{
		HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, GPIO_PIN_RESET);
	}
	if(c==2)
	{
		HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, GPIO_PIN_RESET);
	}
	if(c==3)
	{
		HAL_GPIO_WritePin(LED_3_GPIO_Port, LED_3_Pin, GPIO_PIN_RESET);
	}
	if(c==4)
	{
		HAL_GPIO_WritePin(LED_4_GPIO_Port, LED_4_Pin, GPIO_PIN_RESET);
	}
}
//根据输入数字关闭对应LED灯
void LED_OFF(unsigned char c)
{
	if(c==1)
	{
		HAL_GPIO_WritePin(LED_1_GPIO_Port, LED_1_Pin, GPIO_PIN_SET);
	}
	if(c==2)
	{
		HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, GPIO_PIN_SET);
	}
	if(c==3)
	{
		HAL_GPIO_WritePin(LED_3_GPIO_Port, LED_3_Pin, GPIO_PIN_SET);
	}
	if(c==4)
	{
		HAL_GPIO_WritePin(LED_4_GPIO_Port, LED_4_Pin, GPIO_PIN_SET);
	}
}
//按键检测
unsigned char Key_scan(void)
{
	unsigned char unKey_Val = 0;
	
	if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)==GPIO_PIN_SET)
			unKey_Val = 1;
	if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_2)==GPIO_PIN_SET)
			unKey_Val = 2;
	if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)==GPIO_PIN_SET)
			unKey_Val = 3;	
	if(HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_3)==GPIO_PIN_SET)
			unKey_Val = 4;
	
	return unKey_Val;
}

主函数测试代码如下

72f7e15477e54ea786c8700195616ebf.png

 4 效果展示

6842edbabc484edda234752348b68175.gif

猜你喜欢

转载自blog.csdn.net/qq_49552487/article/details/127396555