基于MCAL,如何重新初始化引脚功能?
-
在使用UART和一些Driver芯片通讯时,有时候需要将UART的TX引脚配置为GPIO功能,持续一段低电平之后,再配置为UART功能,那么在使用MCAL的时候,如何去实现这个操作?我这样操作好像没办法实现切换GPIO控制。
void BusReset(){ uint8 CmdTable_SyncByte[1] = {0x55U}; Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_GPIO); Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_LOW); // delay_us(150); for(uint32 i=0;i<120000;i++) { __NOP(); } Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_HIGH); // USART1_Config(ispeed); Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_ALT2); CddUart_SyncSend(0, CmdTable_SyncByte, 1, 1000); } -
quanfeng 好的,我按照提到的这些步骤可以实现需求了,这样使用会引发其他问题吗?因为我可能需要周期去执行这些步骤。
void BusReset(void) { uint8 CmdTable_SyncByte[1] = {0x55U}; Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_GPIO); Port_SetPinDirection(PORT_HW_PORT_PIN(2, 7), PORT_PIN_OUT); Dio_WriteChannel(DioConf_DioChannel_PTC7_UART1_TX, STD_LOW); // delay_us(150); for(uint32 i=0;i<2000;i++) { __NOP(); } // USART1_Config(ispeed); Port_SetPinMode(PORT_HW_PORT_PIN(2, 7), PORT_PIN_MODE_ALT2); CddUart_SyncSend(0, CmdTable_SyncByte, 1, 1000); }
-
OliverChen 这样基本都是要满足通讯芯片的特定通讯时序或者需要特定电平唤醒等,一般不会引发其他问题
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...
这一项关没有
