板子:STM32F103C8T6 最小系统板(俗称 “Blue Pill 蓝 pill”)
开发工具:cube mx、vs code、keil v5
调用功能:RTC、GPIO(全功能模块调用,测试为此2个模块冲突)
问题:当用cube mx生成含有RTC与GPIO代码时,板子LED1也就是PC13引脚,无法正常控制,时好时坏,且keil v5编译无任何报错。
原因:RTC与板载的LED1共用了一个引脚PC13,在初始化时,RTC将引脚定义了,导致后方GPIO无法正常初始化。此时控制PC13,会出现低电平波动(RTC与GPIO同时控制此引脚)
解决方法:在cube mx的RTC设置界面,选择RTC OUT:NO RTC output,同时下方的Output选项也得选择no......,一共两个位置。
如若是直接修改库文件,则搜索RTC.c文件“hrtc.Init.OutPut = ” ,将其参数设置为no,例如“hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;”。
此方法就是让RTC闹钟输出引脚禁用,将PC13让给LED1用。
注:作者是用于低功耗设计,唤醒时需要RTC与LED1同时运行,所以这样用,若是不需要低功耗则可用其它gpio,无视此问题。将经验发出来是因为搞了几小时没搞出来,问ai,ai给我改了几百行代码,反而把我项目算法毁了,问题也没解决。若有类似PC13引脚出错而其它没出错的,可参照此方法尝试一下
。
开发工具:cube mx、vs code、keil v5
调用功能:RTC、GPIO(全功能模块调用,测试为此2个模块冲突)
问题:当用cube mx生成含有RTC与GPIO代码时,板子LED1也就是PC13引脚,无法正常控制,时好时坏,且keil v5编译无任何报错。
原因:RTC与板载的LED1共用了一个引脚PC13,在初始化时,RTC将引脚定义了,导致后方GPIO无法正常初始化。此时控制PC13,会出现低电平波动(RTC与GPIO同时控制此引脚)
解决方法:在cube mx的RTC设置界面,选择RTC OUT:NO RTC output,同时下方的Output选项也得选择no......,一共两个位置。
如若是直接修改库文件,则搜索RTC.c文件“hrtc.Init.OutPut = ” ,将其参数设置为no,例如“hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;”。
此方法就是让RTC闹钟输出引脚禁用,将PC13让给LED1用。
注:作者是用于低功耗设计,唤醒时需要RTC与LED1同时运行,所以这样用,若是不需要低功耗则可用其它gpio,无视此问题。将经验发出来是因为搞了几小时没搞出来,问ai,ai给我改了几百行代码,反而把我项目算法毁了,问题也没解决。若有类似PC13引脚出错而其它没出错的,可参照此方法尝试一下
