普中STM32-PZ6806L开发板(HAL库函数实现-USART2 中断接收)
2023-12-30 19:33:19
简介
实现USART2 的 中断接收, 发送数据。
电路原理图
USART2接线 原理图
USART2 在主芯片引脚
实物图
其他知识
APIs
stm32f1xx_hal_uart.h
/* 堵塞发送, pData是发送数据, Size发送数据大小, Timeout是超时时间 */
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
/* 堵塞接收, pData是发送数据, Size发送数据大小, Timeout是超时时间 */
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
/* 中断发送, pData是发送数据, Size发送数据大小 */
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
/* 中断接收, pData是发送数据, Size发送数据大小 */
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
/* DMA发送, pData是发送数据, Size发送数据大小 */
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size);
/* DMA接收, pData是发送数据, Size发送数据大小 */
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
/* 中断/DMA 接收回调函数, 在中断/DMA模式时, 有数据接收时将调用此函数, 可重写此函数 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
/* 中断/DMA 发送回调函数, 在中断/DMA模式时, 有数据发送时将调用此函数, 可重写此函数 */
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
实现步骤
创建项目
参考 普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)
初始化USART2
添加用户代码
main.c
uint8_t usart2_dat = 0;
/* 中断回调函数定义 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART2)
{
HAL_UART_Transmit(&huart2, &usart2_dat, 1, 0xff); // USART2接收到的数据发送出去
HAL_UART_Receive_IT(&huart2, &usart2_dat, 1); // USART2继续中断接收
}
}
int main()
{
...
HAL_UART_Receive_IT(&huart2, &usart2_dat, 1); // USART2开始中断接收
while(1)
{
HAL_Delay(1000);
}
...
}
共赏
代码
参考
文章来源:https://blog.csdn.net/halo_hsuh/article/details/135306985
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!