打印
[STM32F1]

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

[复制链接]
3948|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhxingyu|  楼主 | 2019-12-17 08:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是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);

使用特权

评论回复
沙发
sonicll| | 2019-12-17 09:51 | 只看该作者
你前面的程序有打开过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到底是使能的还是关闭的

使用特权

评论回复
板凳
hanzhen654| | 2019-12-17 10:01 | 只看该作者
无法保持?可以输出吗?是不是端口复用了?

使用特权

评论回复
地板
mmuuss586| | 2019-12-17 10:02 | 只看该作者
用CUBE配置下看看,更简单;

另外这几个引脚和JTAG好像有关,需要设置下

使用特权

评论回复
5
zhxingyu|  楼主 | 2019-12-17 10:37 | 只看该作者
sonicll 发表于 2019-12-17 09:51
你前面的程序有打开过LSE和TAMPER吗,这两个功能默认都是关闭的,不用配置,直接配好PC13,14,15的GPIO就 ...

之前没有打开过LSE和TAMPER,突然想到调用下面几个函数,需要打开RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR, ENABLE); 这两个时钟才对,打开试试!

使用特权

评论回复
6
zhxingyu|  楼主 | 2019-12-17 10:39 | 只看该作者
hanzhen654 发表于 2019-12-17 10:01
无法保持?可以输出吗?是不是端口复用了?

是的,无法保持,按上面代码初始化后,把PC14置高,下断点用万用表测PC14脚有高电平输出,但保持4秒左右就又变成低电平了。

使用特权

评论回复
7
hanzhen654| | 2019-12-17 10:42 | 只看该作者
zhxingyu 发表于 2019-12-17 10:39
是的,无法保持,按上面代码初始化后,把PC14置高,下断点用万用表测PC14脚有高电平输出,但保持4秒左右 ...

是端口复用了?还是默认是SWD 或者JTAG使用了

使用特权

评论回复
8
zhxingyu|  楼主 | 2019-12-17 11:08 | 只看该作者
hanzhen654 发表于 2019-12-17 10:42
是端口复用了?还是默认是SWD 或者JTAG使用了

这三个脚给SWD或JTAG有关系吗?仿真用的是SWD。

使用特权

评论回复
9
hjl2832| | 2019-12-17 12:52 | 只看该作者
如果要当普通IO、需要在设置里配置JTAG功能关闭,调试选用swd模式,否则,这些IO默认是JTAG功能。

使用特权

评论回复
10
東南博士| | 2019-12-17 13:03 | 只看该作者
取消JTAG,使能SWD即可!

使用特权

评论回复
11
yklstudent| | 2019-12-17 13:36 | 只看该作者
芯片手册有这么句话:
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).
英文不好可以百度翻译,应该可以理解啥意思

使用特权

评论回复
12
香水城| | 2019-12-18 23:42 | 只看该作者
注意下有无复用冲突的情况,这点用CubeMx配置比较方便;
另外就是楼上提醒的那几个管脚比较特殊,输出的驱动能力及输出速率都很有限。

使用特权

评论回复
13
磨砂| | 2020-1-15 14:17 | 只看该作者
是不是后续程序哪里又对她进行操作了

使用特权

评论回复
14
晓伍| | 2020-1-15 14:41 | 只看该作者
这段英文是啥意思啊

使用特权

评论回复
15
八层楼| | 2020-1-15 14:47 | 只看该作者
能在瞬间输出 但是就是无法保持 是吗

使用特权

评论回复
16
观海| | 2020-1-15 14:52 | 只看该作者
把别的代码都取消 只留下io的代码试试看

使用特权

评论回复
17
guanjiaer| | 2020-1-15 15:00 | 只看该作者
别的代码有没有操作这俩引脚啊

使用特权

评论回复
18
heimaojingzhang| | 2020-1-15 15:03 | 只看该作者
楼主解决问题了吗

使用特权

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

本版积分规则

69

主题

309

帖子

3

粉丝