如题,设计了一个小板子,没留够IO口,仅差一个输入信号口。 输入信号是个无源的开关量。于是考虑用swim口搞。。。还不加上拉电阻。。。 问题来了。 相关代码: //swim口是PD1 //禁用SWIM CFG->GCR=0x01;//SWD禁用 使能PD1正常IO功能 GPIOD->ODR=0x00; GPIOD->CR1=0x76;//PD2/4/5/6输出 PD3悬空 PD1~6存在 GPIOD->DDR=0x74;//PD2/4/5/6输出 GPIOD->CR2=0x08;//PD3输入中断 输出低速 然后,就够了吗?就够了吗?就够了吗? 结果是惨淡的。。IO检测到几乎是随机的电平。。变成了悬空输入。 大家评评理,我是忘掉什么了? 还是这口就是不能做带上拉的输入?明明SWIM口PD1标注的是(HS)来着。。 |
最终并不是设置代码出问题,而是读取代码出问题。
我读了整个D口偏偏屏蔽了PD1。逻辑反了。在此自杀10分钟。。。
于是出现如此神奇的一幕。
事实证明这口能做输入,还能自带上拉。而且禁用SWD只需要那一条代码。
评分
查看全部评分
评分
查看全部评分
楼主可以参考一下:
http://blog.csdn.net/FreeApe/article/details/47008033
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
好像跟RESET有关。
评分
查看全部评分
做输入需要加外部上拉。这样也不影响调试功能。