任务
查看手册对所有的拓展板上和相对应的底板的引脚对应的端口找到以下结论
通过STM32MX软件对各个引脚进行相应的配置
1.第一种切换模式电脑发送
#include "main.h"
#include "icache.h"
#include "usart.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
char buf[16]={0};//保存串口通信数据
//串口控制模式
int m=0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
printf("[%s]\n\r", buf);
if(strcmp(buf,"led")==0)
{
m =1;
//进入LED模式
printf("mode=%d\n\r",m);
}
else if(strcmp(buf,"fan") == 0)
{
m=2;
//进入风扇模式
printf("mode=%d\n\r",m);
}
else if(strcmp(buf,"bee") == 0)
{
m=3;
//进入LED模式
printf("mode=%d\n\r",m);
}
HAL_UART_Receive_IT(&huart1, (uint8_t *)buf, 3);
}
//重写fputc函数
int fputc(int ch, FILE * fp){
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 3);
return ch;
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_9)
{
printf("key\n\r");
if(m == 1)
{
//LED模式
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
}
else if(m == 2)
{
//风扇模式
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);
}
else if(m == 3)
{
//蜂鸣器模式
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_15);
}
}
}
int main(void)
{
HAL_Init();
MX_GPIO_Init();
MX_ICACHE_Init();
MX_USART1_UART_Init();
while (1)
{
//开启串口接收中断模式
HAL_UART_Receive_IT(&huart1,(uint8_t*)buf,3);
}
}
2.按键模式 控制开关main.c核心代码
#include "main.h"
#include "icache.h"
#include "gpio.h"
#include "stdio.h"
int count1 = 0;//记录user按键被按下的次数
int m1=0;//LED控制模式
int m2=1;//风扇控制模式
int m3=2;//蜂鸣器控制模式
//按键控制模式和开关
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_12)
{
count1++;
}
else if(GPIO_Pin==GPIO_PIN_9)
{
//进入LED模式
if(count1%3 == m1)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
}
else if(count1%3 == m2)
//进入风扇模式
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);
}
else if(count1%3 == m3)
//进入蜂鸣器模式
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_15);
}
}
}