OpenEdv-开源电子网

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

串口问题,真是莫名其妙的搞不懂

[复制链接]

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
发表于 2015-8-5 22:47:53 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]int main(void) { u8 len,t,res; char temp[6]; SystemInit(); delay_init(72); LED_Init(); ? uart_init(9600); L298N_Init(); LED_Init(); while(1) { if(USART_RX_STA&0x80) { len=USART_RX_STA&0x3f; // printf("\r\n?ú·???????????:\r\n"); for(t=0;t<len;t++) { USART1->DR=USART_RX_BUF[t]; temp[t]=USART1->DR; while((USART1->SR&0X40)==0); } //res=(temp[0]-0)*100+(temp[1]-'0')*10+temp[2]-'0'; // printf("%d",res); //printf("\n\n"); //?????? USART_RX_STA=0; } }[/mw_shl_code] [mw_shl_code=c,true]这是在MINI 开发板例子主函数里改动的,我没有用printf() 函数打开串口发送数据 怎么也能打印啊? 而且点击Hex发送完全没有反应,这是什么原因啊? [/mw_shl_code]

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

使用道具 举报

13

主题

303

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2275
金钱
2275
注册时间
2015-2-3
在线时间
562 小时
发表于 2015-8-5 23:09:55 | 显示全部楼层
for(t=0;t<len;t++)  

 {   

                USART1->DR=USART_RX_BUF[t];  

                temp[t]=USART1->DR;  

                           

                  while((USART1->SR&0X40)==0);  

}

你的这个 就是在发送数据啊
STM32/LPC1788/51
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-5 23:18:25 | 显示全部楼层
回复【2楼】北极圈的黄昏:
---------------------------------
我在没有从串口发送数据不会进入中断的啊!
回复

使用道具 举报

13

主题

303

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2275
金钱
2275
注册时间
2015-2-3
在线时间
562 小时
发表于 2015-8-6 08:17:36 | 显示全部楼层
是你的程序里面向上位机(PC)在发数据  你从串口发数据是单片机接收数据   你往PC发数据  当然接收得到数据啊
STM32/LPC1788/51
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-8-6 08:54:58 | 显示全部楼层
楼主仔细看看程序把,觉的你没有都懂。。。
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 09:26:46 | 显示全部楼层
回复【5楼】w417074951:
----------------------------好吧  确实不太懂!我这哪里有错误呢?
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-8-6 10:10:15 | 显示全部楼层
帮顶。。。。
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-8-6 10:33:02 | 显示全部楼层
USART1->DR=USART_RX_BUF[t];   

這動作相當於對DR賦值 就跟發送一樣意思了 懂?
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 10:38:23 | 显示全部楼层
回复【8楼】Rocks:
---------------------------------
懂  我把temp[t]=USART1->DR;  这句去掉了  可是还是不显示
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-8-6 10:39:56 | 显示全部楼层
你是哪個不顯示?

這程式撤頭徹尾都是接收阿
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 10:41:46 | 显示全部楼层
回复【8楼】Rocks:
---------------------------------
而且原例子里面就有USART1->DR=USART_RX_BUF[t];    这句啊    意思是把串口发送来的数据再写入USART1里,发送出去
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 10:42:50 | 显示全部楼层
回复【10楼】Rocks:
---------------------------------
我打开串口助手  发送不出去    没反应
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-8-6 10:44:21 | 显示全部楼层
你解釋看看 你這樣寫會先收再發 還是先發在收

USART1->DR=USART_RX_BUF[t];
temp[t]=USART1->DR;
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 10:47:10 | 显示全部楼层
回复【13楼】Rocks:
---------------------------------
这句我知道错了,写入到DR里   它会自己发送出去     我把后一句去掉了
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-8-6 10:56:36 | 显示全部楼层
回复【14楼】day  day  up:
---------------------------------
对啊,DR寄存器就是干这个的
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 11:03:01 | 显示全部楼层
回复【13楼】Rocks:
---------------------------------
我感觉我还是理解错了
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-8-6 11:03:07 | 显示全部楼层
我想你誤會我意思了
我是在指引你把你想要的功能寫出來

你現在想得到的功能是PC串口助手發送資料,透過STM32接收之後把資料再度發送回PC,顯示在串口助手上面 是吧?
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 11:05:25 | 显示全部楼层
回复【15楼】w417074951:
---------------------------------
恩 是的    我不知道是不是我理解错了?从PC发送数据到DR中进中断,然后再由STM32发送到串口打印出来吗?
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 11:06:43 | 显示全部楼层
回复【17楼】Rocks:
---------------------------------
是的    知道能让STM32 接受到数据就可以了
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 11:12:07 | 显示全部楼层
回复【17楼】Rocks:
---------------------------------
我只是想发送  比如23 35 两个数字作为函数的参量
回复

使用道具 举报

2

主题

239

帖子

0

精华

高级会员

Rank: 4

积分
545
金钱
545
注册时间
2015-6-5
在线时间
110 小时
发表于 2015-8-6 11:14:08 | 显示全部楼层
那你的邏輯應該要

1.等待接收
2.收到PC的資料
3.將收到的資料傳送出來
4.接續1.

你試試這樣寫吧
回复

使用道具 举报

13

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2013-12-20
在线时间
8 小时
 楼主| 发表于 2015-8-6 11:25:11 | 显示全部楼层
回复【21楼】Rocks:
---------------------------------
好的 谢谢
回复

使用道具 举报

1

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-7-16
在线时间
3 小时
发表于 2015-8-6 12:38:19 | 显示全部楼层
回复【21楼】Rocks:
---------------------------------
层主哪里人?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 19:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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