对于新入手的开发板,掌握GPIO口的使用是基本功,在富芮坤FR3068x-C开发板上,板载了LED和KEY以供GPIO口的测试及使用,其电路如图1所示。

image.png

image.png

图1  LED与KEY电路


比较令人诧异的是按键所使用的引脚是PP0、PP2及PP3,这却没法对其进行配置。

在外挂触摸模块的情况下,以PB0与-触摸模块相连的情况下,则可以实现按键控制LED灯的作用,其连接如图2所示。比较然人难以接受的是,开发板竟没向用户提供以供电压输出的引脚,要扩展功能器件,只能外挂电源。

image.png

图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所示。


    image.png

    图3 点亮LED


    image.png

    图4 熄灭LED