OpenEdv-开源电子网

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

原子的串口从1改到3之后就死循环了?

[复制链接]

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
发表于 2017-12-13 18:19:15 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 翟树霖 于 2017-12-13 18:23 编辑

我检查了一下午没找到不对的地方 就是下载之后用不了,换个板子也不行。
对了我移植到C8T6的板子上的,应该不是不支持中容量吧?
急急急

1

1

2

2

3

3

4

4

5

5

6 就卡到这了

6 就卡到这了

7

7

最佳答案

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

RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART3,ENABLE);USART3是挂在在APB1上,瞎初始化,还有如果你系统带了原子的液晶,你把重定向改掉,目测直接上系统,没怎么练的。中断程序又不贴出来
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2016-8-5
在线时间
30 小时
发表于 2017-12-13 18:19:16 来自手机 | 显示全部楼层
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART3,ENABLE);USART3是挂在在APB1上,瞎初始化,还有如果你系统带了原子的液晶,你把重定向改掉,目测直接上系统,没怎么练的。中断程序又不贴出来
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-13 18:20:27 | 显示全部楼层
顶DING DING
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-13 18:21:25 | 显示全部楼层
我是在ucosii中用的,换别的usart.c就用不了了
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-13 20:38:15 | 显示全部楼层
不要沉啊 搞了快一天了
回复

使用道具 举报

9

主题

87

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1435
注册时间
2015-5-19
在线时间
132 小时
发表于 2017-12-13 21:35:29 | 显示全部楼层
翟树霖 发表于 2017-12-13 20:38
不要沉啊 搞了快一天了

1、你把串口1换成了串口3,但死在这的这句话是判断串口1的发送位,是不是应该判断USART3的SR寄存器的第7位;
2、按理说USART1不工作,此时它的SR寄存器的第7位应该是复位值,如图所示,判断的话这句话应该通过的,现在死在这,你查查前面有没有对USART1的SR寄存器赋值过,如果没有,在这句话前面添加USART->SR=0x00c0,然后试一下是否可以通过。3、如果不换,用USART1,看看是否正确。

USART的SR寄存器

USART的SR寄存器
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-12-14 08:05:29 | 显示全部楼层
你fputc函数里为什么不把1改成3?你要用3,初始化也是3,结果进调用的函数了你来个1
自在随心
回复

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-12-14 08:35:20 | 显示全部楼层
重定向用的还是串口1,改成串口3就可以了
我是可以什么都不说 ,但不可以什么都不做。
回复

使用道具 举报

16

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2015-12-3
在线时间
55 小时
发表于 2017-12-14 09:18:38 | 显示全部楼层
了解原理后再改,那样很快
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-14 12:21:46 | 显示全部楼层
改过之后还是不行哇,,,哇
QQ截图20171214122130.png
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-14 12:36:47 | 显示全部楼层
但是我换成USARTI之后就能用了
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-14 12:42:46 | 显示全部楼层
胖子阳 发表于 2017-12-13 21:35
1、你把串口1换成了串口3,但死在这的这句话是判断串口1的发送位,是不是应该判断USART3的SR寄存器的第7 ...

不行啊大佬
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-14 12:43:04 | 显示全部楼层
yuzeyuan1 发表于 2017-12-14 08:05
你fputc函数里为什么不把1改成3?你要用3,初始化也是3,结果进调用的函数了你来个1

改过之后还是不行哇
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-14 12:43:21 | 显示全部楼层
super910906 发表于 2017-12-14 08:35
重定向用的还是串口1,改成串口3就可以了

还是不行啊
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2017-12-14 13:11:07 | 显示全部楼层
第四张图,初始化,第95行代码,函数名是APB2,你里面有个APB1和一个APB2,看到不?像我这样写成两条,该1就前后都是1,该2就前后都是2,试试。我这个上面前后都AHB,下面前后都APB
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);
自在随心
回复

使用道具 举报

4

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2014-2-20
在线时间
27 小时
发表于 2017-12-14 13:39:30 | 显示全部楼层
时钟没有打开正确
回复

使用道具 举报

11

主题

95

帖子

0

精华

高级会员

Rank: 4

积分
598
金钱
598
注册时间
2017-3-19
在线时间
116 小时
发表于 2017-12-15 22:07:24 | 显示全部楼层
你的串3中断函数怎么写的
回复

使用道具 举报

14

主题

45

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2017-9-6
在线时间
20 小时
 楼主| 发表于 2017-12-18 12:01:31 | 显示全部楼层
yuzeyuan1 发表于 2017-12-14 13:11
第四张图,初始化,第95行代码,函数名是APB2,你里面有个APB1和一个APB2,看到不?像我这样写成两条,该1 ...

以解决,3Q
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 22:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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