串口USART

中断接收串口数据

1.随便一个文件下边

uint8_t box[1] = {0};//中断接收扫描的直接得到的数据
uint8_t Rbox[29] = {0};//Rbox里面有几个数据就看你要每次接收几个元素
uint8_t Flagg = 0;		


//使用串口1,PB6(TX),PB7(RX)
		
		
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//Sept 2: 中断回调函数,执行:接受到东西后,就进入该函数
{			
	static uint8_t Count = 0;

	if(huart->Instance==USART1)						   //因此此处需要认一下是哪个串口收到数据
 {				
	HAL_UART_Receive_IT(&huart1,(uint8_t *)box,1);//这里是把接受到的东西放入数组box里
	Flagg = 0 ;
	Rbox[Count] = box[0];//box直接从底层接收数据,每次一个元素,在这里送给Rbox
    switch(Rbox[0])//以下只是一个简单的状态机验证
	{
		case 0x54:
		{				
			Count ++;
					
			if(Count == 29)
			{
				 Count = 0 ;
				if(Rbox[28] == 0x0A)
				{
				Flagg = 1;
					break;
				}
			}
				else break;
		  	}
			}
	if(Flagg == 1)
	{
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_15);	//点灯验证
		Flagg = 0;//标志位清0
	}
		HAL_UART_Receive_IT	(&huart1 , box , 1);	//再次打开中断,因为单片机每执行一次中断回调函数,就默认下一次不再执行,这里的1是每次接收1个数据		
	}
				
}

2.主函数里加这一句提前打开(必须加)

HAL_UART_Receive_IT(&huart1, (uint8_t *)&box, 1);

串口数据发送

1.定义一个数组

uint8_t UART_BUF[12] = "you press A!";

2.数据发送函数

HAL_UART_Transmit(&huart1,(uint8_t *)UART_BUF,sizeof(UART_BUF),100);

串口重映射

1.配置

2.添加头文件

#include "stdio.h"

3.实现代码

int fputc(int ch,FILE *p) 
{
 
 HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xffff);
 
 return ch;
 
}

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值