引脚初始化
核心代码
/* USER CODE BEGIN PFP */
/*重定向printf*/
int __io_putchar(int ch){
uint8_t c=ch;
HAL_UART_Transmit(&huart1, &c, 1, 100);
return ch;
}
/* USER CODE END PFP */
将串口接收函数放入main主函数
HAL_UART_Receive_IT(&huart1, &aRxBuffer, 1);
重写回调函数
/* USER CODE BEGIN 4 */
/*通过上位机串口软件发送相应的字符来控制LED灯颜色并返回LED灯状态*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//if(HAL_UART_GET_FLAG(USART1,UART_IT_RXNE)!=RESET){
ucTemp = aRxBuffer; //接收数据转存
if(ucTemp=='1'){printf("RED OPEN\n");LED_RED;}
if(ucTemp=='2'){LED_GREEN;
//Usart_SendString(USART1,"GREEN OPEN")
printf("GREEN OPEN");LED_GREEN;}
if(ucTemp=='3'){printf("BLUE OPEN\n"); LED_BLUE;}
if(ucTemp=='4'){printf("YELLOW OPEN\n");LED_YELLOW;}
if(ucTemp=='5'){printf("PURPLE OPEN\n");LED_PURPLE;}
if(ucTemp=='6'){printf("CYAN OPEN\n");LED_CYAN;}
if(ucTemp=='7'){printf("WHITE OPEN\n");LED_WHITE;}
if(ucTemp=='8'){printf("LED OFF\n");LED_RGBOFF;}
//HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuffer, Uart1_Rx_Cnt,0xFFFF);
while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);
Uart1_Rx_Cnt = 0;
memset(RxBuffer,0x00,sizeof(RxBuffer)); //清空数组
//}
HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //再开启接收中断
}
/* USER CODE END 4 */
LED灯头文件
/*
* LED.h
*
* Created on: Feb 2, 2023
* Author: 13450
*/
#ifndef LED_H_
#define LED_H_
#include "stm32f4xx_hal.h"
#define LED1_PIN GPIO_PIN_6
#define LED1_GPIO_PORT GPIOF
#define LED1_GPIO_CLK RCC_AHB1Periph_GPIOF
//GREEN
#define LED2_PIN GPIO_PIN_7
#define LED2_GPIO_PORT GPIOF
#define LED2_GPIO_CLK RCC_AHB1Periph_GPIOF
//Blue
#define LED3_PIN GPIO_PIN_8
#define LED3_GPIO_PORT GPIOF
#define LED3_GPIO_CLK RCC_AHB1Periph_GPIOF
#define ON 0
#define OFF 1
#define LED1(a)if(a) \
GPIO_SetBits(LED1_GPIO_PORT,LED1_PIN);\
else \
GPIO_ResetBits(LED1_GPIO_PORT,LED1_PIN)
#define LED2(a)if(a) \
GPIO_SetBits(LED2_GPIO_PORT,LED2_PIN);\
else \
GPIO_ResetBits(LED2_GPIO_PORT,LED2_PIN)
#define LED3(a)if(a) \
GPIO_SetBits(LED3_GPIO_PORT,LED3_PIN);\
else \
GPIO_ResetBits(LED3_GPIO_PORT,LED3_PIN)
#define LED1_TOGGLE HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin)
#define LED1_ON HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET)
#define LED1_OFF HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET)
#define LED2_TOGGLE HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin)
#define LED2_ON HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET)
#define LED2_OFF HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET)
#define LED3_TOGGLE HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin)
#define LED3_ON HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_RESET)
#define LED3_OFF HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_SET)
#define LED_RED \
LED1_ON;\
LED2_OFF;\
LED3_OFF
#define LED_GREEN \
LED1_OFF;\
LED2_ON;\
LED3_OFF
#define LED_BLUE \
LED1_OFF;\
LED2_OFF;\
LED3_ON
#define LED_YELLOW \
LED1_ON;\
LED2_ON;\
LED3_OFF
#define LED_PURPLE \
LED1_ON;\
LED2_OFF;\
LED3_ON
#define LED_CYAN \
LED1_OFF;\
LED2_ON;\
LED3_ON
#define LED_WHITE \
LED1_ON;\
LED2_ON;\
LED3_ON
#define LED_RGBOFF \
LED1_OFF;\
LED2_OFF;\
LED3_OFF
void LED_GPIO_Config(void);
#endif /* LED_H_ */
3.最终烧录效果展示