目录
实验:通过串口一使用接收中断实现不定长数据收发
1.头文件内容如下
#ifndef __USART_H__
#define __USART_H__
#include "sys.h"
#define UART1_RX_BUF_SIZE 128
#define UART1_TX_BUF_SIZE 64
#define UART_EOK 0
#define UART_ERROR 1
#define UART_ETIMEOUT 2
#define UART_EINVAL 3
void uart1_init(uint32_t baudrate);
void uart1_receiv_test(void);
#endif
在头文件中,我定义了接收数组的长度和发送数组的长度,同时我也定义了一些调试信息
2.对串口进行初始化
uint8_t uart1_rx_buf[UART1_RX_BUF_SIZE];
uint16_t uart1_rx_len = 0;
uint16_t uart1_cnt = 0, uart1_cntPre = 0;
UART_HandleTypeDef uart1_handle = {0};
void uart1_init(uint32_t baudrate)
{
uart1_handle.Instance = USART1;
uart1_handle.Init.BaudRate = baudrate;
uart1_handle.Init.WordLength = UART_WORDLENGTH_8B;
uart1_handle.Init.StopBits = UART_STOPBITS_1;
uart1_handle.Init.Parity = UART_PARITY_NONE;
uart1_handle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
uart1_handle.Init.Mode = UART_MODE_TX_RX;
HAL_UART_Init(&uart1_handle);
}
跟上一篇文章里面的初始化内容一样,这里不过多赘述
3.在msp函数中对外设gpio口和nvic进行初始化
msp公用的一个函数这里有三个串口,都会调用msp,所以先进行一个判断
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeD

最低0.47元/天 解锁文章
2668

被折叠的 条评论
为什么被折叠?



