OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4958|回复: 5

HAL库如何使用串口发送32位数据

[复制链接]

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2019-11-7
在线时间
56 小时
发表于 2021-10-13 16:56:24 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 aadwacf 于 2021-10-13 16:58 编辑

void USART_SendData(USART_TypeDef* USARTx, uint32_t Data)
{
  assert_param(IS_USART_ALL_PERIPH(USARTx));


  USARTx->DR = (( Data & (uint32_t)0xff000000 ) >>24);
  USARTx->DR = (( Data & (uint32_t)0xff0000 ) >>16);
  USARTx->DR = (( Data & (uint32_t)0xff00 ) >>8);
  USARTx->DR = ( Data & (uint32_t)0xff ) ;

while(__HAL_UART_GET_FLAG(USART1, USART_FLAG_TC)==RESET);

}
STM32F4xx的HAL库里没有USART_GetFlagStatus(USART1, USART_FLAG_TC)函数,有没有其他方式可以发送32位数据?
我使用HAL库里的__HAL_UART_GET_FLAG来检车标志位,为什么系统报错?
..\SYSTEM\usart\usart.c(118): error:  #136: struct "<unnamed>"  has no field "Instance"

最佳答案

查看完整内容[请看2#楼]

uint32_t data; uint8_t buff[4]; buff[0]=(uint8_t)(data>>24); buff[1]=(uint8_t)(data>>18&0xFF); buff[2]=(uint8_t)(data>>12&0xFF); buff[3]=(uint8_t)(data&0xFF); HAL_UART_Transmit(&huart1 , buff, 4, 0xff); 这样发送的话,接收到的是32位数据还是4个8位数据,从电脑串口上看是4个8位数据
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2019-11-7
在线时间
56 小时
 楼主| 发表于 2021-10-13 16:56:25 | 显示全部楼层
A571157242 发表于 2021-10-13 18:36
没其他方式发送32位了,串口的DR寄存器就是8位发的,只能4次传入DR寄存器发32位数据

uint32_t data;

uint8_t buff[4];

buff[0]=(uint8_t)(data>>24);

buff[1]=(uint8_t)(data>>18&0xFF);

buff[2]=(uint8_t)(data>>12&0xFF);

buff[3]=(uint8_t)(data&0xFF);

HAL_UART_Transmit(&huart1 , buff, 4, 0xff);
这样发送的话,接收到的是32位数据还是4个8位数据,从电脑串口上看是4个8位数据
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4309
金钱
4309
注册时间
2019-9-4
在线时间
896 小时
发表于 2021-10-13 18:36:19 | 显示全部楼层
没其他方式发送32位了,串口的DR寄存器就是8位发的,只能4次传入DR寄存器发32位数据
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3606
金钱
3606
注册时间
2019-8-14
在线时间
1052 小时
发表于 2021-10-13 18:37:05 | 显示全部楼层
错误提示是说没有这个成员,你看下对应的结构体成员是哪个,改为hal库的结构体成员就可以了
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2019-11-7
在线时间
56 小时
 楼主| 发表于 2021-10-14 09:26:44 | 显示全部楼层
本帖最后由 aadwacf 于 2021-10-14 09:33 编辑
hou18 发表于 2021-10-13 18:37
错误提示是说没有这个成员,你看下对应的结构体成员是哪个,改为hal库的结构体成员就可以了

库里面自动调用这个函数,为什么没问题啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-10-15 01:54:32 | 显示全部楼层
aadwacf 发表于 2021-10-13 16:56
uint32_t data;

uint8_t buff[4];

是对的,这是4个8位数据,你在电脑组合成32位即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表