fwqs2008 发表于 2017-4-27 15:09:43

STM8S003K3 PD6引脚无法识别到输入高电平

本帖最后由 fwqs2008 于 2017-4-27 15:11 编辑

配置代码如下
/* 输入脚所接的GPIO端口定义 */
#define VOICE_DATA_PORT         GPIOD      
#define VOICE_BUSY_PORT         GPIOD      

/* 输入脚所接的GPIO引脚定义 */
#define VOICE_DATA_PIN          GPIO_PIN_7
#define VOICE_BUSY_PIN          GPIO_PIN_6


//初始化

GPIO_Init(VOICE_DATA_PORT,VOICE_DATA_PIN, GPIO_MODE_OUT_PP_HIGH_FAST );      
GPIO_Init(VOICE_BUSY_PORT,VOICE_BUSY_PIN, GPIO_MODE_IN_FL_NO_IT );            //定义输入管教为输入不带上拉模式,不带中断



当PD6所接为高电平时,PD6无法读到高电平,仿真得到的寄存器PD_IDR对应的PD6位还是为0,将PD6换做PF4之后,可以正确读到外部高电平。
PD6和PD5是串口引脚,这个是可以用做普通IO吗,这里PD6读不到高电平有可能是什么原因?

网上搜索没找到相关问题,希望各位大神能帮忙解答下,谢谢

sssdd 发表于 2017-5-10 12:50:29

开启PD6输入的秘诀就是,把其他AD,UART功能关掉。
然后,我也不知道是不是那个函数本身有问题。
直接操作寄存器也才4句。为毛要库函数?
甚至,你要的悬空输入模式甚至是默认的。把这两句设置直接注释掉。看看PD6回来了没有?

稀饭放姜 发表于 2017-5-13 21:44:22

STM8S的ADC模拟输入复用脚有个寄存器是控制是否启用触发器的寄存器:
ADC_TDRH
ADC_TDRL

如果你启用ADC的时候不小心设置错了这个寄存器,就会出现你说的故障。

wenyangzeng 发表于 2017-7-11 09:24:02

STM8S固件库实际上没有S003的头文件,用函数库编程有点问题,不止这个GPIO问题,其他配置也有问题。建议使用寄存器编程。

林光光1号 发表于 2017-7-11 09:41:04

建议用寄存器来操作,PD6复位默认是GPIO功能,配置输出输入应该是没问题的

无薪税绵 发表于 2017-7-11 10:21:05

换PF4能读到高电平,就证明了库没有问题。
可能PD6复位默认是串口功能,
请检查一下,有没有切换到普通IO功能。

sfd123-302670 发表于 2017-7-11 10:31:54

估计是 配置问题啊!

wudianjun2001 发表于 2017-7-11 10:39:29

是不是其他复用的引脚功能影响了,好好看看数据书吧

gujiamao 发表于 2017-7-11 11:19:31

是不是焊接短到地了

sting 发表于 2017-7-11 12:10:23

wenyangzeng 发表于 2017-7-11 09:24
STM8S固件库实际上没有S003的头文件,用函数库编程有点问题,不止这个GPIO问题,其他配置也有问题。建议使 ...

STM8S固件库有S003的头文件,请贵户在瞧仔细
页: [1] 2
查看完整版本: STM8S003K3 PD6引脚无法识别到输入高电平