打印
[STM32F1]

STM32F103的PC13,PC14,PC15无法保持高电平输出

[复制链接]
776|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dengdc|  楼主 | 2021-12-9 21:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F103的PC13,PC14,PC15无法保持高电平输出

使用特权

评论回复
沙发
renyaq| | 2021-12-9 21:27 | 只看该作者

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
dengdc|  楼主 | 2021-12-9 21:29 | 只看该作者
芯片是STM32F103RC,用到PC13和PC14脚驱动CD4052,在网上查询了很多方法,如下代码,仍然无法输出高电平,请教大家还有什么原因引起的?GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(( RCC_APB2Periph_GPIOC |  RCC_APB2Periph_AFIO), ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15;               
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;


PWR_BackupAccessCmd(ENABLE);//ÔÊÐíÐÞ¸ÄRTCºÍºó±¸¼Ä´æÆ÷
RCC_LSEConfig(RCC_LSE_OFF);//¹Ø±ÕÍⲿµÍËÙʱÖÓ£¬PC13\PC14\PC15¿ÉÓÃ
BKP_TamperPinCmd(DISABLE);//¹Ø±ÕÈëÇÖ¼ì²â¹¦ÄÜPC13ÓÃGPIO
PWR_BackupAccessCmd(DISABLE);//½ûÖ¹ÐÞ¸ÄRTCºÍºó±¸¼Ä´æÆ÷
GPIO_Init(GPIOC, &GPIO_InitStructure);

使用特权

评论回复
地板
spark周| | 2021-12-9 21:31 | 只看该作者
你前面的程序有打开过LSE和TAMPER吗,这两个功能默认都是关闭的,不用配置,直接配好PC13,14,15的GPIO就能用。
如果你之前打开过LSE和TAMPER,那关闭tamper还需要打开pwr和bkp的时钟:
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR, ENABLE);        
        PWR_BackupAccessCmd(ENABLE);
        RCC_LSEConfig(RCC_LSE_OFF);
        BKP_TamperPinCmd(DISABLE);        
        PWR_BackupAccessCmd(DISABLE);
你最好在仿真状态下看看LSE和tamper到底是使能的还是关闭的

使用特权

评论回复
5
xxrs| | 2021-12-9 21:34 | 只看该作者
无法保持?可以输出吗?是不是端口复用了?

使用特权

评论回复
6
chuxh| | 2021-12-9 21:36 | 只看该作者
用CUBE配置下看看,更简单;

使用特权

评论回复
7
xxrs| | 2021-12-9 21:37 | 只看该作者
另外这几个引脚和JTAG好像有关,需要设置下

使用特权

评论回复
8
dengdc|  楼主 | 2021-12-9 21:39 | 只看该作者
之前没有打开过LSE和TAMPER,突然想到调用下面几个函数,需要打开RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR, ENABLE); 这两个时钟才对,打开试试!

使用特权

评论回复
9
dengdc|  楼主 | 2021-12-9 21:43 | 只看该作者
是的,无法保持,按上面代码初始化后,把PC14置高,下断点用万用表测PC14脚有高电平输出,但保持4秒左右就又变成低电平了。

使用特权

评论回复
10
zhenykun| | 2021-12-9 21:45 | 只看该作者
是端口复用了?还是默认是SWD 或者JTAG使用了

使用特权

评论回复
11
dengdc|  楼主 | 2021-12-9 21:49 | 只看该作者
这三个脚给SWD或JTAG有关系吗?仿真用的是SWD。

使用特权

评论回复
评论
sundea 2021-12-10 09:37 回复TA
没有关系,这三个脚是给RTC用的 
12
zwll| | 2021-12-9 21:50 | 只看该作者
如果要当普通IO、需要在设置里配置JTAG功能关闭,调试选用swd模式,否则,这些IO默认是JTAG功能。

使用特权

评论回复
13
renyaq| | 2021-12-9 21:52 | 只看该作者
取消JTAG,使能SWD即可!

使用特权

评论回复
14
chenjunt| | 2021-12-9 21:55 | 只看该作者
芯片手册有这么句话:
5、PC13, PC14 and PC15 are supplied through the power switch. Since the switch only sinks a limited amount of current (3
mA), the use of GPIOs PC13 to PC15 in output mode is limited: the speed should not exceed 2 MHz with a maximum load of
30 pF and these IOs must not be used as a current source (e.g. to drive an LED).
英文不好可以百度翻译,应该可以理解啥意思

使用特权

评论回复
15
renyaq| | 2021-12-9 21:57 | 只看该作者
注意下有无复用冲突的情况,这点用CubeMx配置比较方便;

使用特权

评论回复
16
heweibig| | 2021-12-9 21:59 | 只看该作者
另外就是楼上提醒的那几个管脚比较特殊,输出的驱动能力及输出速率都很有限。

使用特权

评论回复
17
jlyuan| | 2021-12-9 22:01 | 只看该作者
是不是后续程序哪里又对她进行操作了

使用特权

评论回复
18
chuxh| | 2021-12-9 22:03 | 只看该作者

这段英文是啥意思啊

使用特权

评论回复
19
heweibig| | 2021-12-9 22:08 | 只看该作者
能在瞬间输出 但是就是无法保持 是吗

使用特权

评论回复
20
wuhany| | 2021-12-9 22:10 | 只看该作者
把别的代码都取消 只留下io的代码试试看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝