0
点赞
收藏
分享

微信扫一扫

MFC工控项目实例之十七添加手动测试界面

前言

一、配置

二、使用步骤

1.串口发送

代码逻辑

效果展示

2.串口接收单个字符

代码逻辑

中断回调函数

3.串口接受字符串

代码逻辑

字符串函数

中断回调函数

声明

代码开源


前言

一、配置

二、使用步骤

1.串口发送

代码逻辑
char tx_buf[20];

 LCD_Init();
    LCD_Clear(White);
    LCD_SetBackColor(White);
	LCD_SetTextColor(Black);
	sprintf(tx_buf,"jin ke\r\n");
	HAL_UART_Transmit(&huart1,(uint8_t*)tx_buf,strlen(tx_buf),50);
效果展示

2.串口接收单个字符

案例:接受到O时,点亮LED1并发送LED1OPEN!,接受到C时,熄灭LED1并发LED1CLOSE!

代码逻辑
  uint8_t rx_data;
中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(rx_data=='O')
	{led_show(2,1);
	sprintf(tx_buf,"led1OPEN!");
	HAL_UART_Transmit(&huart1,(uint8_t*)tx_buf,strlen(tx_buf),50);
	}
	if(rx_data=='C')
	{led_show(2,0);
	sprintf(tx_buf,"led1CLOSE!");
	HAL_UART_Transmit(&huart1,(uint8_t*)tx_buf,strlen(tx_buf),50);	
	}
	HAL_UART_Receive_IT(&huart1,&rx_data,1);
}

3.串口接受字符串

代码逻辑
字符串函数
void uart_proc(void)
{
if(rx_count==4)
{
	if(strcmp(rx_buf,"LEDO")==0)
	{
	led_show(1,1);
	sprintf(tx_buf,"led1OPEN!\r\n");
    HAL_UART_Transmit(&huart1,(uint8_t*)tx_buf,strlen(tx_buf),50);
	}	
	if(strcmp(rx_buf,"LEDC")==0)
	{
	led_show(1,0);
	sprintf(tx_buf,"led1CLOSE!\r\n");
    HAL_UART_Transmit(&huart1,(uint8_t*)tx_buf,strlen(tx_buf),50);
	}
	rx_count=0;
	memset(rx_buf,0,20);
}
}
中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

	rx_buf[rx_count++]=rx_data;
	HAL_UART_Receive_IT(&huart1,&rx_data,1);
}
声明
/* USER CODE BEGIN PV */
 uint8_t key_rval;
 char tx_buf[20];
 uint8_t rx_data;
 char rx_buf[20];
 uint8_t rx_count;
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
void uart_proc(void);
/* USER CODE END PFP */

代码开源

通过网盘分享的文件:12-TEST6-串口通信(接收和发送多个字符).zip
链接: https://pan.baidu.com/s/1IoKdqO9sgooXArpK1wgjyg?pwd=0820 提取码: 0820

举报

相关推荐

0 条评论