请选择 进入手机版 | 继续访问电脑版
查看: 1563|回复: 8

[求助] 请教关于KE06的UART0的禁能问题

[复制链接]

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
发表于 2018-11-17 18:20:48 | 显示全部楼层 |阅读模式
本帖最后由 yang912088 于 2018-11-20 15:40 编辑

应用中使用到了UART0,引脚为PTB1/PTB0,但是当中有些阶段需要使PTB0/PTB1用作输入,而不用UART0功能,由于普通IO功能的优先级低于UART功能,我觉得需要把UART0先禁能,才能使输入功能有效。
所以,我尝试禁能UART0的发送器和接收器,禁能UART0的时钟源,再将PTB0/1设为输入,发生一个奇怪的现象,当有外部KBI中断进来,UART0打印SWD复位的提示。如果不禁能UART0的发送器和接收器以及时钟源,直接将PTB0/1设为输入,第一次执行时能够成功设为输入,然后作为串口发送数据后,第二次执行时,结果还是UART0状态下的高电平(外接有下拉电阻)。

所以想请教一下我的设想能不能实现?UART0能不能禁能?

我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
 楼主| 发表于 2018-11-19 12:05:08 | 显示全部楼层
自己支持一下。
回复 支持 反对

使用道具 举报

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19547
最后登录
2024-3-28
发表于 2018-11-21 10:28:55 | 显示全部楼层

可以实现啊,只要UART0没有使能,而GPIO使能的话,PTB0/1就可以做完GPIO的功能的
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
 楼主| 发表于 2018-11-21 11:25:19 | 显示全部楼层
小恩GG 发表于 2018-11-21 10:28
可以实现啊,只要UART0没有使能,而GPIO使能的话,PTB0/1就可以做完GPIO的功能的 ...

一上电UART0是启用的,经过初始化了,然后想做GPIO用。
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
 楼主| 发表于 2018-11-21 11:37:57 | 显示全部楼层
现在实验的结果是,将PTB0/1直接初始化为输入,不禁能UART0的时钟和收发器,在使用UART0之前将PTB1(TX)初始化为输出,下次再作为GPIO输入时就也正常了。

这样的话,UART0和GPIO都能用了,而手册上说的“外设模块的优先级高于I/O,因此当启用外设
时,会禁用相关的I/O 功能”,针对这个还不太明白。
回复 支持 反对

使用道具 举报

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19547
最后登录
2024-3-28
发表于 2018-11-22 09:37:28 | 显示全部楼层
手册上说的指的是,两个功能不能同时实现,而你的应用也没有GPIO功能和UART的TX功能一块起作用啊
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
 楼主| 发表于 2018-11-22 11:05:11 | 显示全部楼层
小恩GG 发表于 2018-11-22 09:37
手册上说的指的是,两个功能不能同时实现,而你的应用也没有GPIO功能和UART的TX功能一块起作用啊 ...

关键在于实现的方法,原来想的是在用作GPIO前禁能UART0,可是这种方法没有成功,反而是仅仅通过改变TX引脚的输入输出方向就能实现,不需要禁能UART0,
我的疑问点:
1. UART0不禁能的话,不相当于还是启用状态吗?
2. 改变TX引脚的输入输出方向就能实现PTB0/1两个功能的切换,这个依据手册上没找到。
回复 支持 反对

使用道具 举报

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19547
最后登录
2024-3-28
发表于 2018-11-22 15:44:16 | 显示全部楼层
yang912088 发表于 2018-11-22 11:05
关键在于实现的方法,原来想的是在用作GPIO前禁能UART0,可是这种方法没有成功,反而是仅仅通过改变TX引 ...

'原来想的是在用作GPIO前禁能UART0', 你的意思是说PTB0/1不能作为普通的GPIO,当UART没被使能的情况下,这应该是不可能的吧
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

108

帖子

0

中级会员

Rank: 3Rank: 3

积分
242
最后登录
2021-12-10
 楼主| 发表于 2018-11-22 16:52:12 | 显示全部楼层
本帖最后由 yang912088 于 2018-11-22 17:03 编辑
小恩GG 发表于 2018-11-22 15:44
'原来想的是在用作GPIO前禁能UART0', 你的意思是说PTB0/1不能作为普通的GPIO,当UART没被使能的情况下, ...

实际的情况是,一上电就使能了UART0了,使能后再想用作GPIO的,使用GPIO功能后,再转回来作UART0用,这样交替......
我的意思是,在UART0使能的情况下,不经过禁能,就能通过将PTB1配置为输入,作为GPIO的输入功能来用(如果禁能UART0的时钟,反而会造成中断异常,如1楼所说),再想转回来做UART用,把TX脚PTB1配置为输出就可以了。

谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-3-29 09:43 , Processed in 0.129682 second(s), 28 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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