OpenEdv-开源电子网

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

请教一下关于串口usart输出数据类型的问题

[复制链接]

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
发表于 2020-2-15 19:32:02 | 显示全部楼层 |阅读模式
5金钱
stm32战舰系列usart串口输出函数为“void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)“,数据为unsigned short int  (16位)。我自己封装了一个函数,如图1。

问题:
1、我想通过串口直接将字符串”初始化成功“做函数P的参数,提示错误如图2。
     通过提示分析,字符串是char类型1字节,u16是2字节,于是我通过强制转化(u16*)来修饰字符串,错误提示消失。但是最终串口助手接受到却是乱码,应该是丢失数据了。

2、我做的这个例程是 关于实时时钟(RTC)的,我想通过函数  "uint32_t RTC_GetCounter(void)"  函数返回计数寄存器的值,实现串口打印出如下格式,但是函数返回的是32位的数据,请问一下有什么好的建议吗??
”1s“
"2s"
"3s"
....
最后谢谢您的仔细阅读,感谢您的答疑解惑。

1.jpg
2.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2020-2-16 08:53:55 | 显示全部楼层
将函数USART1_P的u16 * buffer 改为char * buffer 这样执行buffer++指针才是1个字节步进。
32时钟可以转化成年 月 日 时分秒 网上可以找到转代码
要实现变量打印,可以实验格式化输出,printf 或 sprintf
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2020-2-16 11:15:44 | 显示全部楼层
DongInker 发表于 2020-2-16 08:53
将函数USART1_P的u16 * buffer 改为char * buffer 这样执行buffer++指针才是1个字节步进。
32时钟可以转化 ...

明白了 谢谢您的回复
回复

使用道具 举报

24

主题

113

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2019-11-8
在线时间
62 小时
 楼主| 发表于 2020-2-16 11:56:25 | 显示全部楼层
DongInker 发表于 2020-2-16 08:53
将函数USART1_P的u16 * buffer 改为char * buffer 这样执行buffer++指针才是1个字节步进。
32时钟可以转化 ...

麻烦您再看看这个,通过在备份区寄存器写入0x8888来预防复位后数据丢失,为什么最后我读的RTC 的count计数寄存器 还是被清零了呢?是因为备份电池没有电了吗?开发板买了3个月了
1.jpg
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 18:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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