打印
[STM32F1]

STM32F105主板HAL库函数

[复制链接]
444|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢醇|  楼主 | 2024-4-10 14:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F105主板HAL库函数HAL_UART_Receive_IT()中第二个参数uint8_t *pData必须为无符号整型??

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

    huart->pTxBuffPtr = pData;
    huart->TxXferSize = Size;
    huart->TxXferCount = Size;

    huart->ErrorCode = HAL_UART_ERROR_NONE;
    huart->gState = HAL_UART_STATE_BUSY_TX;

    /* Process Unlocked */
    __HAL_UNLOCK(huart);

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

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

使用特权

评论回复
沙发
远山寻你| | 2024-5-14 13:41 | 只看该作者
你其实可以自己写个串口接收函数就好了

使用特权

评论回复
板凳
三生万物| | 2024-5-14 16:00 | 只看该作者
这种不是必须的,自己应该是可以修改的

使用特权

评论回复
地板
暖了夏天蓝了海| | 2024-5-14 18:00 | 只看该作者
我们假设接收到的温度数据是一个16位的有符号整型数据,存储在receiveBuffer数组中。我们使用位操作将两个字节的数据合并成一个有符号整型数据,并将其存储在temperature变量中。

使用特权

评论回复
5
别乱了阵脚| | 2024-5-14 20:00 | 只看该作者
这个没注意过,不过一般自己写个串口接收函数也可以

使用特权

评论回复
6
冰春彩落下| | 2024-5-14 22:00 | 只看该作者
你先改成有符号的呗,试试,也许就可以了

使用特权

评论回复
7
一秒落纱| | 2024-5-15 01:00 | 只看该作者
你转义一下数据不就好了么

使用特权

评论回复
8
江河千里| | 2024-5-15 03:00 | 只看该作者
一般情况是统一一下数据格式,你试试呢?

使用特权

评论回复
9
淡漠安然| | 2024-5-15 09:00 | 只看该作者
我觉得你可以根据实际情况修改receiveBuffer的索引和位操作的方式,以适应你的具体数据格式和存储方式

使用特权

评论回复
10
光辉梦境| | 2024-5-15 11:00 | 只看该作者
你先收数据,收完自己在改一下呗

使用特权

评论回复
11
夜阑风雨| | 2024-5-15 13:00 | 只看该作者
接收函数无所谓吧,你收完再处理一下格式不就行喽?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

1187

帖子

5

粉丝