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读不到高电平有可能是什么原因?
网上搜索没找到相关问题,希望各位大神能帮忙解答下,谢谢
开启PD6输入的秘诀就是,把其他AD,UART功能关掉。
然后,我也不知道是不是那个函数本身有问题。
直接操作寄存器也才4句。为毛要库函数?
甚至,你要的悬空输入模式甚至是默认的。把这两句设置直接注释掉。看看PD6回来了没有? STM8S的ADC模拟输入复用脚有个寄存器是控制是否启用触发器的寄存器:
ADC_TDRH
ADC_TDRL
如果你启用ADC的时候不小心设置错了这个寄存器,就会出现你说的故障。 STM8S固件库实际上没有S003的头文件,用函数库编程有点问题,不止这个GPIO问题,其他配置也有问题。建议使用寄存器编程。 建议用寄存器来操作,PD6复位默认是GPIO功能,配置输出输入应该是没问题的 换PF4能读到高电平,就证明了库没有问题。
可能PD6复位默认是串口功能,
请检查一下,有没有切换到普通IO功能。 估计是 配置问题啊! 是不是其他复用的引脚功能影响了,好好看看数据书吧 是不是焊接短到地了 wenyangzeng 发表于 2017-7-11 09:24
STM8S固件库实际上没有S003的头文件,用函数库编程有点问题,不止这个GPIO问题,其他配置也有问题。建议使 ...
STM8S固件库有S003的头文件,请贵户在瞧仔细
页:
[1]
2