OpenEdv-开源电子网

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

STM8S在一个程序中,引脚能够分别作为输入和输出轮流变化使用吗?

[复制链接]

2

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2016-11-3
在线时间
49 小时
发表于 2018-6-8 15:20:42 | 显示全部楼层 |阅读模式
20金钱

芯片

芯片

LED和按键

LED和按键

    因为芯片和LED不在同一块PCB板,它们之间是用导线连接,为了减少导线数量,所以只采用了PC5和PC6两个IO口来控制。
1.PC5和PC6为输出口。PC6输出高电平,PC5输出低电平,这时候绿灯亮;
2.PC5和PC6为输出口。PC6输出低电平,PC5输出高电平,这时候黄灯亮;
3.PC5为输出口,PC6为输入口,这时候PB2就可以正常采样,用来判断SM1和SW两个按键是否按下,以及是哪一个按键按下。


    这时候PC6就要在输入和输出之间变化,结果造成串口一直主动发送数据FF。尝试过不变化输入和输出,都不会有数据发送,而且PC6直接作为输入端采样的结果是正确的。我在程序中试过只改变PC_DDR_DDR6的赋值和PC_DDR_DDR6、PC_CR1_C16、PC_CR1_C26都改变,结果都是一样。
    不知道搜索的关键字是不是不对,都没有找到有关的资料,只能在这边发帖麻烦一下大家了。

最佳答案

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

初始化时PC_DDR_DDR6 = 1;为输出模式,PC_CR2_C26 = 1(输出速度最大为10MHz), 而在将IO口切换为输入模式PC_DDR_DDR6 = 0;后,PC_CR2_C26 = 1(使能外部中断)。 虽然在最初切换模式后有将外部中断禁止,但是PC_CR2_C26 = 0;确放在了PC_DDR_DDR6 = 0;之后,这可能导致了IO口切换为输入模式后进入了莫名的外部中断,结果造成一切换输入输出模式串口就会一直输出FF,将顺序对调后就没有问题了。 至于为什么进入了外部中断则 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2016-11-3
在线时间
49 小时
 楼主| 发表于 2018-6-8 15:20:43 | 显示全部楼层
初始化时PC_DDR_DDR6 = 1;为输出模式,PC_CR2_C26  = 1(输出速度最大为10MHz),
而在将IO口切换为输入模式PC_DDR_DDR6 = 0;后,PC_CR2_C26  = 1(使能外部中断)。
虽然在最初切换模式后有将外部中断禁止,但是PC_CR2_C26  = 0;确放在了PC_DDR_DDR6 = 0;之后,这可能导致了IO口切换为输入模式后进入了莫名的外部中断,结果造成一切换输入输出模式串口就会一直输出FF,将顺序对调后就没有问题了。
至于为什么进入了外部中断则还没搞清楚
回复

使用道具 举报

2

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2016-11-3
在线时间
49 小时
 楼主| 发表于 2018-6-8 15:28:39 | 显示全部楼层
在输入和输出之间进行变化,差不多短的100ms左右就要变化一次了。不知道有没有可能是因为时间太短造成的还是说STM8S不支持这样。
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164932
金钱
164932
注册时间
2010-12-1
在线时间
2100 小时
发表于 2018-6-10 02:08:37 | 显示全部楼层
当然是可以的,你切换模式即可。
回复

使用道具 举报

2

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2016-11-3
在线时间
49 小时
 楼主| 发表于 2018-6-11 08:46:04 | 显示全部楼层
正点原子 发表于 2018-6-10 02:08
当然是可以的,你切换模式即可。

原子哥,我上拉输入和浮空输入以及开漏输出和推挽输出都试过了,只要是切换模式就会有FF自动通过串口发出,不切换模式就不会,这有哪些原因会引起这个问题呢?因为已经自己想了很多天,自己能想到的可能性都试过了才来发帖寻求帮助的
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164932
金钱
164932
注册时间
2010-12-1
在线时间
2100 小时
发表于 2018-6-12 01:35:26 | 显示全部楼层
唯认真而 发表于 2018-6-11 08:46
原子哥,我上拉输入和浮空输入以及开漏输出和推挽输出都试过了,只要是切换模式就会有FF自动通过串口发出 ...

说明有干扰,这种没办法避免,只能通过软件识别,处理。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-16 23:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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