[STM32F1] STM32F105主板HAL库函数

[复制链接]
1424|10
 楼主| 慢醇 发表于 2024-4-10 14:45 | 显示全部楼层 |阅读模式
STM32F105主板HAL库函数HAL_UART_Receive_IT()中第二个参数uint8_t *pData必须为无符号整型??

stm32f1xx_hal_uart.c文件中对HAL_UART_Receive_IT()函数的描述为
  1. HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
  2. {
  3.   /* Check that a Tx process is not already ongoing */
  4.   if(huart->gState == HAL_UART_STATE_READY)
  5.   {
  6.     if((pData == NULL) || (Size == 0U))
  7.     {
  8.       return HAL_ERROR;
  9.     }
  10.     /* Process Locked */
  11.     __HAL_LOCK(huart);

  12.     huart->pTxBuffPtr = pData;
  13.     huart->TxXferSize = Size;
  14.     huart->TxXferCount = Size;

  15.     huart->ErrorCode = HAL_UART_ERROR_NONE;
  16.     huart->gState = HAL_UART_STATE_BUSY_TX;

  17.     /* Process Unlocked */
  18.     __HAL_UNLOCK(huart);

  19.     /* Enable the UART Transmit data register empty Interrupt */
  20.     __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);

  21.     return HAL_OK;
  22.   }
  23.   else
  24.   {
  25.     return HAL_BUSY;
  26.   }
  27. }
其中第二个参数定义为uint8_t *pData
本人使用串口中断接收温度数据,而温度数据是有符号整型的,与上述函数定义矛盾,请问应该怎样更改呢??

远山寻你 发表于 2024-5-14 13:41 | 显示全部楼层
你其实可以自己写个串口接收函数就好了
三生万物 发表于 2024-5-14 16:00 | 显示全部楼层
这种不是必须的,自己应该是可以修改的
暖了夏天蓝了海 发表于 2024-5-14 18:00 | 显示全部楼层
我们假设接收到的温度数据是一个16位的有符号整型数据,存储在receiveBuffer数组中。我们使用位操作将两个字节的数据合并成一个有符号整型数据,并将其存储在temperature变量中。
别乱了阵脚 发表于 2024-5-14 20:00 | 显示全部楼层
这个没注意过,不过一般自己写个串口接收函数也可以
冰春彩落下 发表于 2024-5-14 22:00 | 显示全部楼层
你先改成有符号的呗,试试,也许就可以了
一秒落纱 发表于 2024-5-15 01:00 | 显示全部楼层
你转义一下数据不就好了么
江河千里 发表于 2024-5-15 03:00 | 显示全部楼层
一般情况是统一一下数据格式,你试试呢?
淡漠安然 发表于 2024-5-15 09:00 | 显示全部楼层
我觉得你可以根据实际情况修改receiveBuffer的索引和位操作的方式,以适应你的具体数据格式和存储方式
光辉梦境 发表于 2024-5-15 11:00 | 显示全部楼层
你先收数据,收完自己在改一下呗
夜阑风雨 发表于 2024-5-15 13:00 | 显示全部楼层
接收函数无所谓吧,你收完再处理一下格式不就行喽?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

136

主题

1384

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部