对于新入手的开发板,掌握GPIO口的使用是基本功,在富芮坤FR3068x-C开发板上,板载了LED和KEY以供GPIO口的测试及使用,其电路如图1所示。
图1 LED与KEY电路
比较令人诧异的是按键所使用的引脚是PP0、PP2及PP3,这却没法对其进行配置。
在外挂触摸模块的情况下,以PB0与-触摸模块相连的情况下,则可以实现按键控制LED灯的作用,其连接如图2所示。比较然人难以接受的是,开发板竟没向用户提供以供电压输出的引脚,要扩展功能器件,只能外挂电源。
图2 触摸模块连接
此时,对LED和触摸模块使用引脚的配置函数分别为:
<pre>voidLED _config(void)
{
__SYSTEM_GPIOD_CLK_ENABLE();
__SYSTEM_GPIO_CLK_SELECT_COREH();
GPIO_Handle.Pin = GPIO_PIN_14;
GPIO_Handle.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Handle.Pull = GPIO_PULLUP;
gpio_init(GPIOD, &GPIO_Handle);
} </pre>
复制代码<pre>voidKEY _config(void)
{
__SYSTEM_GPIOD_CLK_ENABLE();
__SYSTEM_GPIO_CLK_SELECT_COREH();
GPIO_Handle.Pin =GPIO_PIN_0;
GPIO_Handle.Mode = GPIO_MODE_INPUT;
GPIO_Handle.Pull = GPIO_PULLUP;
gpio_init(GPIOB, &GPIO_Handle);
}
</pre>
复制代码实现功能测试的主程序为:
<pre>int main(void)
{
GPIO_InitTypeDef GPIO_Handle;
pmu_init();
system_clock_config();
GPIO_Handle.Pin = GPIO_PIN_4|GPIO_PIN_5;
GPIO_Handle.Mode = GPIO_MODE_AF_PP;
GPIO_Handle.Pull = GPIO_PULLUP;
GPIO_Handle.Alternate = GPIO_FUNCTION_1;
gpio_init(GPIOB, &GPIO_Handle);
__SYSTEM_UART_CLK_SELECT_COREH();
Uart3_handle.UARTx = UART3;
Uart3_handle.Init.BaudRate = 115200;
Uart3_handle.Init.DataLength = UART_DATA_LENGTH_8BIT;
Uart3_handle.Init.StopBits = UART_STOPBITS_1;
Uart3_handle.Init.Parity = UART_PARITY_NONE;
Uart3_handle.Init.FIFO_Mode = UART_FIFO_ENABLE;
uart_init(&Uart3_handle);
printf("SystemCoreClock:%d\r\n", system_get_CoreClock());
printf("SystemDSPClock:%d\r\n", system_get_DSPClock());
printf("System_CORE_HSCLK:%d\r\n", system_get_CORE_HSCLK());
printf("System_SPLLCLK:%d\r\n", system_get_SPLLCLK());
printf("System_AUPLLCLK:%d\r\n", system_get_AUPLLCLK());
LED _config();
KEY _config();
while(1)
{
if((gpio_read_pin(GPIOB, GPIO_PIN_0)==0)
{
gpio_write_pin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
}
else
{
gpio_write_pin(GPIOD, GPIO_PIN_14, GPIO_PIN_CLEAR);
}
system_delay_us(100);
}
}
</pre>
复制代码此外,还可以利用开发板的引脚资源来扩展外部的功能模块,以LED模块为例,若将其连接到PA5引脚,经引脚的配置,其控制效果如图3和图4所示。
图3 点亮LED
图4 熄灭LED