您好!
有个疑惑,为什么GPIO会初始化两次?
在程序启动的地方,进行过GPIO初始化,初始化的Table可以在 .syscfg文件中修改。
但是实际用GPIO的地方,会对它再次初始化
另外实际测试发现,有的GPIO不在 Board_initGeneral()函数列表里,也可以模仿 Board_initKeys() 的方法进行调用。
那么这个 Board_initGeneral()-> pin_init() 这个函数的意义在哪,不需要前置初始化,后续初始化也可以使用。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
有个疑惑,为什么GPIO会初始化两次?
在程序启动的地方,进行过GPIO初始化,初始化的Table可以在 .syscfg文件中修改。
但是实际用GPIO的地方,会对它再次初始化
另外实际测试发现,有的GPIO不在 Board_initGeneral()函数列表里,也可以模仿 Board_initKeys() 的方法进行调用。
那么这个 Board_initGeneral()-> pin_init() 这个函数的意义在哪,不需要前置初始化,后续初始化也可以使用。
Board_initGeneral會先調用PIN_init函数 (Must be called early in the boot sequence to ensure that I/O pins have safe
configurations.),後續要再設置IO可以透過PIN_open在應用程序去新增或是修改,PIN_open是可以多次調用的
我同意YiKai的说法,PIN_open是可以被多次调用的,另外你可以debug单步运行查看具体的程序调用
感谢回答,但是仍然有个疑问,如果 PIN open 可以直接增加和修改,那么 PIN_init 意义在哪,是不是可以随便在 PIN_init 添加一个GPIO,其他GPIO都在 PIN_open里做即可?
以前写过STM32编程,GPIO只初始化一次,因此有疑问,感谢!
你可以去研究一下\source\ti\drivers\pin下PINCC26XX.c中PIN_init/PIN_open的源碼就可以知道差異,基本上就是有些動作只需要做一次,就在PIN_init做,之後如果只是要改腳位設置,就可以用PIN_open
明白,我研究过,正想和您确认,就是说,这个PIN_init其实是对所有GPIO的一个初始化配置,并不是针对某个pin脚。Table里面添加的其实是额外的pin脚初始化,其实不做也可以通过PIn_open来实现,我这样理解对吗?
Pin_open 和 Pin_int 对应的 Table 其实是不一样的函数,但是配置的内容是一样的
我现在做过一个测试,只配置一个GPIO,后续所有要用到的,都用Pin_open来实现,目前没有遇到Bug