OpenEdv-开源电子网

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

stm32串口直接接收数据的问题

[复制链接]

22

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-4-14
在线时间
0 小时
发表于 2014-7-11 22:46:43 | 显示全部楼层 |阅读模式
5金钱
问个串口反面的小问题,原子哥给的例程显示温度啦ADC的值啦什么的都是用TFT,先问下,我如果用串口显示的话要怎么写啊,是不是配置好串口,直接一句USART_SendData(USART1,'\n');,这个好像不能输出啊。。。。。。。。

最佳答案

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

USART_SendData()是发送一个字符数据,可以自己写一个的函数发送字符串: void USART_SendStr(char *s) {     while(*s != NULL)     {         USART_SendData(USART1, (uint8_t) ch);         while (USART_GetFlagStatus(USART1, USART_FLAG_TC) ==&n ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-10
在线时间
0 小时
发表于 2014-7-11 22:46:44 | 显示全部楼层
USART_SendData()是发送一个字符数据,可以自己写一个的函数发送字符串:
void USART_SendStr(char *s)
{
    while(*s != NULL)
    {
        USART_SendData(USART1, (uint8_t) ch);
        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}
        s++;
    }
}
可以也使用printf()打印信息,不过需要将printf()函数重定向:
#include <stdio>
int fputc(int ch, FILE *f)
{
      USART_SendData(USART1, (uint8_t) ch);
      while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}
      return ch;
}
推荐使用printf()函数,因为它带格式输出的打印,如果想要打印串口接收到的数据可以这样做:
printf("%c", USART_ReceiveData(USART1));
你上面说的打印AD,直接 printf("%d", AD_Value); 不就可以了吗?
回复

使用道具 举报

22

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-4-14
在线时间
0 小时
 楼主| 发表于 2014-7-12 08:10:22 | 显示全部楼层
我在前面又加了这么一句 i=USART_ReceiveData(USART1);,可是串口读出来的都是000,不解 啊。。。。。。。。。。。。
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-7-12 18:40:34 | 显示全部楼层
回复【3楼】ziye334:
---------------------------------
谢谢分享。。。正解
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

22

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-4-14
在线时间
0 小时
 楼主| 发表于 2014-7-14 14:35:27 | 显示全部楼层
回复【3楼】ziye334:
---------------------------------
用着不如这个好用
void USART_SendStr(u8 *s)
{
while(*s!=NULL)
{
u16 temp;
temp=(u16)(*s)&0x00ff;
USART_SendData(USART1,temp); 
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
s++;
}
回复

使用道具 举报

22

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-4-14
在线时间
0 小时
 楼主| 发表于 2014-7-15 15:10:19 | 显示全部楼层
回复【3楼】ziye334:
---------------------------------
恩,那我如果打印浮点数呢,例如37.75,printf(“%2.2f”,adc);这样的话出现了乱码啊。。。。。。。。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 05:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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