STM32F103C8T6第4天:串口实验(非中断和中断)、hc01蓝牙、esp8266WIFI、4g

1. 串口基本介绍(332.36)

常用函数介绍

串口发送/接收函数:

  • HAL_UART_Transmit(); 串口发送数据,使用超时管理机制
  • HAL_UART_Receive(); 串口接收数据,使用超时管理机制
  • HAL_UART_Transmit_IT(); 串口中断模式发送
  • HAL_UART_Receive_IT(); 串口中断模式接收
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,
      uint8_t *pData, uint16_t Size, uint32_t Timeout)

作用:以阻塞的方式发送指定字节的数据

  • 形参 1 :UART_HandleTypeDef 结构体类型指针变量
  • 形参 2:指向要发送的数据地址
  • 形参 3:要发送的数据大小,以字节为单位
  • 形参 4:设置的超时时间,以ms单位
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart,
      uint8_t *pData, uint16_t Size)

作用:以中断的方式接收指定字节的数据

  • 形参 1 是 UART_HandleTypeDef 结构体类型指针变量
  • 形参 2 是指向接收数据缓冲区
  • 形参 3 是要接收的数据大小,以字节为单位

此函数执行完后将清除中断,需要再次调用以重新开启中断。

串口中断回调函数:

  • HAL_UART_IRQHandler(UART_HandleTypeDef *huart); //串口中断处理函数
  • HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); //发送中断回调函数
  • HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); //接收中断回调函数

状态标记变量:

  • USART_RX_STA(符合变量的命名规则下 可重新命名):
    • 从 0 开始,串口中断接收到一个数据(一个字节)就自增 1。当数据读取全部 OK 时候(回车和换行符号来的时候),那么 USART_RX_STA 的最高位置 1,表示串口数据接收全部完毕了,然后 main 函数里面可以处理数据了。
      在这里插入图片描述

串口接收中断流程

在这里插入图片描述

2. 串口实验 (非中断)(333.37)

  • 需求: 接受串口工具发送的字符串,并将其发送回串口工具。
  • 硬件接线:
    • TX – A10
    • RX – A9
    • gnd – gnd (5v 实测可以不接)
      一定要记得交叉接线!!
  • 串口配置:
  1. 选定串口
    在这里插入图片描述
  2. 选择模式(异步通讯)
    在这里插入图片描述
  3. 串口配置
    在这里插入图片描述
  4. 使用MicroLIB库
    从魔术棒打开,这个勾勾一定要打上,否则 printf 无法重映射!
    在这里插入图片描述
  • STM32CubeMx工程配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 串口调试助手的一些设置
    在这里插入图片描述
    在这里插入图片描述
  • 代码(11.uart1_test/MDK-ARM)
#include <stdio.h>
#include <string.h>
int fputc(int ch, FILE *f)
{
   
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
int main(void)
{
   
	unsigned char ch[20] = {
   0};//char(acter)
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();//串口初始化
	HAL_UART_Transmit(&huart1, (uint8_t *) "hello world\n", strlen("hello world\n"), 100);//超时100
  while (1)
  {
   
		HAL_UART_Receive(&huart1, ch, 19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值