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