|
gpio配置
a_bb 你好,
1)你在配置输入的时候需要用GPIO_IPConnected = GPIO_IPConnected_Enable, 你用的是输出不需要。 在"str91x_gpio.c"文件我们可以看GPIO_Init的函数:
if(GPIO_InitStruct->GPIO_IPConnected == GPIO_IPConnected_Enable) { /*IP Connected enable*/ SCU->GPIOIN[GPIO_Number] |= 0x1 << Counter; }
2)如果我们看reference manual的I/O Control Block Diagram 的话,GPIO_Input和GPIO_Output是配置IO口的方向用的 ( GPIOx->DDR ).你用alternate function 2 还是 alternate function 3, 不用配置。
也可以用这个代码(我没试过,因该没什么问题):
/*Configure UART0_CTS P2.0*/ GPIO_DeInit(GPIO2); /*After DeInit function P2.0 = UART0_CTS (defaut configuration)*/
GPIO_DeInit(GPIO5); /*Gonfigure UART0_Rx pin GPIO5.1*/ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_IPConnected = GPIO_IPConnected_Enable; GPIO_Init (GPIO5, &GPIO_InitStructure);
GPIO_DeInit(GPIO3); /*Gonfigure UART0_Tx pin GPIO3.4*/ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt3 ; GPIO_Init (GPIO3, &GPIO_InitStructure);
/*Gonfigure UART0_RTS pin GPIO3.3*/ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Alternate = GPIO_OutputAlt3 ; GPIO_Init (GPIO3, &GPIO_InitStructure);
对性能不是最好的(调试很多次一样的函数)但是可能清楚一点儿。
Regards, Stephane |
|