在F28069中,GPIO0-GPIO11这几个具有pwm功能的GPIO口为上电默认不上拉,即输出低电平是吧,先想上电输出高电平,应该怎么办,谢谢
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.
在F28069中,GPIO0-GPIO11这几个具有pwm功能的GPIO口为上电默认不上拉,即输出低电平是吧,先想上电输出高电平,应该怎么办,谢谢
外部加上拉电阻就可以了。
如果您认为此问题已被解答,请在“这是否解答您的问题” 后,点击“是”按钮。 感谢您对TI的支持!
首先,需要肯定你比大多数用户更了解芯片,知道GPIO有上拉,而与PWM口复用的GPIO引脚是默认不使能的;
其次,你上面的描述中还是有一点不大准确,即GPIO的方向:上电时默认的方向是输入而不是输出的(请查看TRM里GPIO方向寄存器的说明),所以上电后无论否有使能上拉电路,GPIO引脚对应的电平都不会对外部电路有影响的;
最后,想确认一下你为什么要输出高电平?如果是要驱动外部电路,那么除了电平以外,还是需要改变方向的。
一种方法就是上面提到的外加上拉电阻,但同时也要在软件里设置方向为输出,还有一种办法是使能内部上拉,同时在软件里也设置方向为输出。
既然都要通过软件设置,那就不是上电后立即生效的,所以做法是不要在main()函数里执行,而是放到reset后执行汇编语句的第一时间里去,也即codestartbranch.asm文件里,你可以参考其中关闭看门狗的方式对GPIO进行设置。
这取决于这个电平是来自哪里,也即先要判断是CPLD产生的,还是C2000产生的。
一个直接的办法就是在外部加一个很强的下拉,实际上是可以根据电流算出来大概的电平然后有针对性地去改变。
回到来源上,如果是CPLD,我没什么建议,如果是C2000,则还是上面提到的,在上电复位后的瞬间通过汇编文件进行软件处理。