做国外订单的网站,网站没收录要怎么做,北京如何做网站网页,制作杂志wordpress主题目前在用STM32G070做项目#xff0c;其中PD2TIMER3去模拟PWM#xff0c;PD0用作按键检测#xff0c;测试发现PD0低电平检测没有问题#xff0c;高电平检测不到#xff0c;电路图如下图所示#xff1a; 用万用表测试电平#xff0c;高电平1.0V左右#xff0c;首先怀疑硬… 目前在用STM32G070做项目其中PD2TIMER3去模拟PWMPD0用作按键检测测试发现PD0低电平检测没有问题高电平检测不到电路图如下图所示 用万用表测试电平高电平1.0V左右首先怀疑硬件问题把光电开关拔掉P16悬空发现还是1.0V后面电阻和电容也没有短路再查软件把IO口看了下PD0初始化也看了没有问题想不通了于是百度下搜到下面这篇文章STM32G070单片机 PD0 PB15引脚内部下拉使用需要主意。
项目场景
STM23G070单片机的PD0引脚作为开漏输出的时候外部接了一个51K上拉电阻到5V想让PD0开漏输出高的时候是5V开漏输出低的时候是0V。 问题描述
STM23G070单片机的PD0引脚作为开漏输出的时候外部接了一个51K上拉电阻到5V单独测试PD0的时候是可以正常的开漏输出高的时候5V低的时候可以到0V但是一旦PD1推挽输出输出高之后情况就变了在PD1推挽输出高情况下PD0开漏输出高的时候却始终只有2.4V输出低的时候是0V正常的。 原因分析
查阅STM32G0数据手册可知 这个引脚的电平类型为FT_c我们知道FT是容忍5V的意思那么FT_c是什么意思不妨看看说明 然后去用户手册查看GPIO相关说明找到以下内容 基本上了解状况了再看一下相关寄存器说明 具体说明 ;
寄存器操作
SYSCFG-CFGR1 | 0x00600;其实PA8和PA15也是这样的。如果我们不需要这个下拉电阻需要按照上面的操作调整一下。 即TYPE-C充电管理的相关引脚所以才会有这样的设置。若想进一步了解TYPE-C相关知识可以自行查找相关资料。
于是按着提示修改 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG);LL_SYSCFG_DisableDBATT(LL_SYSCFG_UCPD1_STROBE | LL_SYSCFG_UCPD2_STROBE);
或者 LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG);SYSCFG-CFGR1 |0x00000600;
再测试正常。