HAL库串口发送函数 加 接收函数

数据类型

一个字节8个比特位,串口发送函数的第三个参数,写入的是数据的数量,以字节为单位。

​

/* exact-width signed integer types */
typedef   signed          char int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;
typedef   signed       __INT64 int64_t;

/* exact-width unsigned integer types */
typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;
typedef unsigned           int uint32_t;
typedef unsigned       __INT64 uint64_t;


​

HAL库  串口发送函数 HAL_UART_Transmit();

参数huart:  填写串口句柄的指针

参数pdate:  填写要发送的数据指针

参数size:  填写要发送数据的数量,以字节为单位

参数timeout:超时时间,单位ms              该函数存在一个返回值,返回发送成功还是失败

#include "main.h"

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

	uint8_t bytenumber = 0x5a;
	uint8_t byteArray[] = {1,2,3,4,5}; 
	char ch='a';
	char *str="hello world";   字符串指针存放字符串
	
	HAL_UART_Transmit (&huart1,&bytenumber ,1,HAL_MAX_DELAY );1句柄,2数据地址,3以字节为单位的数量,4超时时间。
	HAL_UART_Transmit (&huart1,byteArray ,5,HAL_MAX_DELAY );
	HAL_UART_Transmit (&huart1,(uint8_t *)&ch,1,HAL_MAX_DELAY );
	HAL_UART_Transmit (&huart1,(uint8_t *) str ,strlen(str),HAL_MAX_DELAY );得加个头文件

 
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

HAL库 串口接收函数  HAL_UART_Receive();

接收数据,控制板载LED亮,和灭。

while (1)
  {
		uint8_t Rxdate;    //用来接收数据
		HAL_UART_Receive (&huart1 ,&Rxdate ,1,HAL_MAX_DELAY );//1串口句柄,2指向接收
		//缓冲区的指针,3接收数据的数量,以字节为单位
		
		if(Rxdate == '0')
		{
			HAL_GPIO_WritePin (GPIOC,GPIO_PIN_13,GPIO_PIN_SET );//开漏模式写1高阻态,灭。
		}
		else if(Rxdate == '1')
		{
			HAL_GPIO_WritePin (GPIOC,GPIO_PIN_13,GPIO_PIN_RESET );//开漏模式写0导通,亮。
		}

### STM32 F4 HAL 串口中断接收函实现及用法 对于STM32 F4系列微控制器,在使用HAL进行串口中断接收时,主要依赖于`HAL_UART_Receive_IT()`函数来启动中断接收过程[^1]。 #### 初始化配置 为了使能UART外设并设置其参,需先初始化UART句柄结构体。这通常通过CubeMX工具自动生成代码完成,也可以手动编写如下: ```c UART_HandleTypeDef huart2; void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 9600; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart2.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart2) != HAL_OK) { Error_Handler(); } } ``` #### 启动中断接收 一旦完成了上述初始化工作,则可以通过调用`HAL_UART_Receive_IT()`方法开启指定量字节的接收操作。此命令会自动挂起当前线程直到接收到预期长度的消息为止,并触发相应的回调处理程序[^2]。 ```c uint8_t U2RxBuff; // 开启串口2接收中断 HAL_UART_Receive_IT(&huart2, &U2RxBuff, 1); ``` #### 处理接收据 当有新字符到达时,系统将执行预定义好的回调函数来进行进一步的操作。这些回调可以被重写以便适应特定应用需求。下面是一个简单的例子展示了如何覆盖默认行为以打印所读取到的内容至调试终端上: ```c void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Prevent unused argument(s) compilation warning */ UNUSED(huart); if (huart->Instance == USART2) { printf("Received char: %c\n", U2RxBuff); // 继续等待下一个字符的到来 HAL_UART_Receive_IT(&huart2, &U2RxBuff, 1); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值