我用rt_pin_mode初始化GPIO,简单测试了一下电平输出,没有问题。
但是当我创建各种线程后,发现有4个继电器输出不正常,不能正常关闭,我仿真发现,电平确实没有按照业务逻辑翻转,所以请问用rt_pin_mode初始化GPIO前,还需要打开相应时钟吗?我怀疑是初始化时没有打开时钟导致的
PIN设备驱动框架已经做了相关的操作了。不用再配置时钟,直接用rt_pin_mode设置即可。
你的4个继电器控制IO没有正常进行翻转,建议还是再排查一下你的程序,或者单步调试看看有没有翻转的语句是否正常执行?
rt_hw_pin_init 函数是对GPIO进行初始化的函数,楼主看一下你的 rt_hw_pin_init
函数,看有没有对应的时钟进行初始化。
如果检测软件没问题的话,检查下你的继电器输出部分是不是有类似寄生电容或者是没有泄电电路,这个会影响后级电路的电平输出的。
谢谢各位大佬的回答,我在控制台打印了具体信息 发现是事件集的问题 导致继电器工作与预想的有冲突,现在已经解决,与底层没关系
并不是rt_pin_mode 调用底层驱动打开了GPIO时钟,而是GPIO设备在初始化的时候打开了时钟: