stm32cubemx配置串口中断

一使用cubemx创建工程

首先打开cubemx这个软件,然后选择新建工程
​​​​
​​在这里插入图片描述
然后选择我们的芯片类型,根据自己的芯片类型选择
在这里插入图片描述

①配置时钟

根据芯片情况来配置时钟源,我们这里选择的外部时钟源
在这里插入图片描述
接下来是对时钟树的配置
在这里插入图片描述
在上面黑框类输入最大的然后按一下回车,他就会帮你配置好

②配置串口中断

首先是开启这个串口,开启串口的中断
我们这里选择的波特率是115200,这里的波特率必须跟通信的另一方波特率相同,否则会出现乱码
在这里插入图片描述
接下来是开启串口的中断
在这里插入图片描述
到这里我们就完成了串口的配置,接下来我们需要保存工程,打开工程。
下面就是输入工程名称,尽量选择英文名称,选择编译文件,如果你是kiel5就选择跟我一样的
在这里插入图片描述
在这里插入图片描述
勾选上面的设置,然后生成工程,打开工程

③内部程序编写

首先我们在这里添加如下代码
在这里插入图片描述

uint8_t mmm[20]={"hello windows "};
uint8_t USART1_RXbuff;
uint8_t  aa[1]="#";
uint8_t gg[1]="*";
char ss =1;

定义基本的参数
下面是在这个位置添加如下代码
在这里插入图片描述

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	 if(huart->Instance==USART1)
	 {
		 
		 if(USART1_RXbuff==aa[0])
		 {
			 ss=1;
		 }
		 if(USART1_RXbuff==gg[0])
		 {
			 ss=0;
		 }
		 
	 }
	  HAL_UART_Receive_IT(&huart1,(void *)&USART1_RXbuff,1);
	
	
}

接下来是
在这里插入图片描述

 HAL_UART_Receive_IT(&huart1,(void *)&USART1_RXbuff,1);

接下来在mian函数中while循环中添加如下函数
在这里插入图片描述

   if(ss==1){
     HAL_UART_Transmit_IT(&huart1,mmm,sizeof(mmm));
	
	  HAL_Delay(1000);
	            }

到这里程序就编写完成了

④具体原理

STM32的USART通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。
有别于USART,还有一个UART,它在USART基础上裁减掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是UART。
串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。
USART满足外部设备对工业标准NRZ异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。
USART支持同步单向通信和半双工发单线通信;还支持同步单向通信和半双工单线通信;还支持局域互连网络LIN、智能卡(SmartCard)协议与 IrDA(红外线数据协会) SIR ENDEC规范。
USART支持使用DMA,可实现高速数据通信。

⑤总结

我们是通过串口通信吗,设置串口1,单片机发送hellow windows,一直发送,当上位机发送#号到单片机时停止发送,当上位机*号到单片机时开始发送。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值