stm32H750工程配置,定时器中断与串口收发通信(中断与DMA)测试

引言:

以人为例,人与人交流需要共同语言,传输媒介,而串口通信可作用于两设备之间进行交流,其前提是保证两设备的通信波特率一致,其异步通信方式可理解是两设备之间无需有时钟线的限制(这里不过多解释)。
该博客将使用一个板子一个串口来进行收发通信测试,收发方式使用中断和DMA,同时在此之前会教大家配置工程以及定时器中断。

一、基础配置

在这里插入图片描述
打开cubemx搜索芯片stm32H750VBT6
在这里插入图片描述
新建好之后对RCC的配置如下
在这里插入图片描述
接下来配置时钟树,左边8输入的是外部晶振频率,中间红框输入480最大值,回车后自动分分配数值,稍等一会就好

、定时器中断配置

在这里插入图片描述
选择定时器14,勾选activated,配置属性和上图一样,由于定时器14的总频率为240MHZ,则中断频率为240/240/1000=1000HZ,即1ms执行一次中断
在这里插入图片描述
在此NVIC settings窗口打开定时器中断,即勾选Enabled

串口中断配置

在这里插入图片描述
选择打开串口五,mode选择Asynchronous异步通信,Baud Rate(波特率)需要两个设备一致,但用一个串口发给自己收波特率本就一致了,不做修改。
在这里插入图片描述
同理在NVIC settings拦勾选Enabled打开串口中断
在这里插入图片描述
还可以先尝试把DMA加上去,需要用的时候可以直接用,点Add添加收发的DMA

在这里插入图片描述
NVIC是一个管理所有中断的窗口,勾选即为打开中断,preemption priority为中断优先级,其数值越小其优先级越高。

生成工程

在这里插入图片描述
工程名称和工程存放路径不能有中文
第三块红框那选择MDK,版本我一般选择V5,目的是生成keil上的工程文件
在这里插入图片描述
在code generate中需要勾选这个,目的是为了各自生成.c和.h文件
最后点击右上角的generate code ,至此工程就建立好了

代码编写

一、定时器中断

确定定时器中断测试
在main函数里需要先打开定时器中断
可在 /* USER CODE BEGIN 2 */下添加

  HAL_TIM_Base_Start_IT(&htim14);

接下来需要用到定时器中断回调函数,在配置时打开中断后就会自动生成其的弱函数,只需要重新定义一遍再添加我们需要的代码即可

//定时器中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	
}

二、串口中断接发

收发数据我们前提需要有数据发且有位置存,至此我们需要定义一组发送和存储的数组,且要求为一字节8位的数据才能正常发送接收

//定义发送和接收存储的数组
uint8_t txbuffer[2]={1,2};
uint8_t rxbuffer[2];

之后便可在WHILE循环里发送数据,如图
在这里插入图片描述

// 中断发送
HAL_UART_Transmit_IT(&huart5,txbuffer,sizeof(txbuffer));

发送完成需要测试能否接收
在发送前先开启一次接收,如图
在这里插入图片描述
添加该函数

// 中断接收
HAL_UART_Receive_IT(&huart5,rxbuffer,sizeof(rxbuffer));

同定时器中断一样,串口中断有它的中断回调,我们使用到串口接收中断回调

// 中断接收回调
int a,b;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart==&huart5)
	{
		HAL_UART_Receive_IT(&huart5,rxbuffer,sizeof(rxbuffer));
		a=rxbuffer[0];
		b=rxbuffer[1];
	}

}    

至此串口的中断收发就完成了

三、串口DMA接发

如若不是使用空闲中断(具体可自己去了解)简单的DMA不需要过多操作,只需在之前的中断发送和接收函数修改即可

// DMA发送
HAL_UART_Transmit_DMA(&huart5,txbuffer,sizeof(txbuffer));
// DMA接收
HAL_UART_Receive_DMA(&huart5,rxbuffer,sizeof(rxbuffer));

该博客为从简培训,很多地方可能无法详细说明以及存在瑕疵,目的为实现功能,对于多数以及其他知识点需各自多多去学习了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值