tip :第一个项目作为主要文件,后续的功能主要是用Cubemx生成代码然后移植到电机控制的项目中。
1 工程建立
可以直接翻野火的资料,这里为了配合骄阳的板子进行配置
1.1 创建工程如下图
1.2 GPIO口
按键(GPIO输入按下为高电平)引脚为
SW7/RESET
KEY1/SW2=PA0
KEY2/SW3=PG2
KEY3/SW3=PC13
KEY4/SW4=PG3
KEY5/SW5=PG4
电灯(GPIO输出高电平有效)引脚为
LED1=PA15
LED2=PE2
LED3=PG15
LED4=PB8
挨个对GPIO进行配置,按键选output,led选input
下面这里LED要改(高电平推挽上拉高速模式)
1.3 时钟及其他配置
这里配置为个人习惯
点击生成代码
2 工程验证
简单配置一下仿真器,试试能不能烧进去
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;
}
主函数测试代码如下