历史上的今天
今天是:2024年12月21日(星期六)
2021年12月21日 | STM32HAL库普通模式串口收发
2021-12-21 来源:eefocus
一.简单了解
串口模式实现有三种
1.普通模式:在主函数中接收函数
2.中断模式:产生的不影响主程序运行
3. DMA模式:与主函数互不影响,独立运行
本文记录第一种普通模式。
学习目标是:实现普通串口的数据收发,发送数据时LED灯电平翻转。
二.步骤
步骤1:在STM32CUBEMX中创建好工程,我这里用的是小熊派的STM32L431RCT6开发板,需要配置的有LED灯,PC13为output。uart1为异步收发全双工,时钟为80Mhz。
步骤2:打开工程文件,在uart.c中,包含标准头文件以及实现串口的重定向
#include "stdio.h"
int fputc(int ch,FILE* f)
{
uint8_t temp[1]={ch};
{
HAL_UART_Transmit(&huart1,temp,1,2);
}
return HAL_OK;
}
步骤3:在stm32l4xx_hal_uart.h中的1608行找到如下两个函数:
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
步骤4:在main.c中,实现功能函数
首先包含标准头文件#include "stdio.h"
宏定义串口一:#define UART1
main函数中:
uint8_t Rdata;//变量用于存放接收到的数据
printf("welcome to uart1 test!rn");
while(1)
{
#ifdef UART1
//如果接收OK,那么把接收到的数据发送到串口数据里面,并反转LED灯。
if(HAL_UART_Receive(&huart1,&Rdata,1,0)==HAL_OK)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_UART_Transmit(&huart1,&Rdata,1,0);
}
#endif
}
三.实现结果
史海拾趣
|
目录: 第一章 PN结的电流-电压特性 一、平衡PN结 二、PN结的正向特性 三、PN结的反向特性 附录1 关于平衡PN结费米能级处处相同的证明 附录2 平衡PN结接触电势差公式的推导 附录3 平衡PN结载流子浓度分布的讨论 第二章 PN结的空间电荷区、 ...… 查看全部问答> |
|
【用DriverStudio的进.........解决即给分】 DriverStudio 3.1一个奇怪的问题 我在VC 6.0中用DriverWizard生成一个工程后,想用“Modify Current DriverWizard property\"结果提示: Cannot locate DriverWizard Settings *Vars.xml Currently only C DriverWizard supports s ...… 查看全部问答> |
|
有个触摸屏装的WINCE 6.0,想增加一个串口,使用了USB转串口的转换器,但是驱动不知道怎么装上去,转换器的驱动只有一个DLL文件和一个INF文件,请问如何安装?… 查看全部问答> |
|
我拉个激动,tb买的东东终于到了,真的感谢eeworld给这个机会啊,东西真不错。 准备用的加速度度传感器为adxl345,陀螺仪为pmu3050 lv8731驱动步进电机 组装图整体如下 … 查看全部问答> |




