本帖最后由 jennyzhaojie 于 2024-12-11 22:41 编辑
在MCXN947开发板配有RGB_LED和按键,可进行GPIO口的输入和输出功能的测试,RGB_LED和按键ISP的电路如图1所示。
图1 RGB灯和ISP键电路
在对相关引脚进行输入、输出功能配置后,通过对按键状态的配备,可实现一个8进制的计算器,将计算器的值与7种色彩建立起对应的关系,就实现了以按键切换色彩的作用。
实现了按键切换色彩的主程序为:
int main(void)
{
uint8_t n=0;
gpio_pin_config_t led_config = {
kGPIO_DigitalOutput,
0,
};
gpio_pin_config_t key_config = {
kGPIO_DigitalInput,
0,
};
CLOCK_SetClkDiv(kCLOCK_DivFlexcom4Clk, 1u);
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
CLOCK_EnableClock(kCLOCK_Gpio0);
CLOCK_EnableClock(kCLOCK_Gpio1);
BOARD_InitPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
GPIO_PinInit(GPIO0, 10U, &led_config);
GPIO_PinInit(GPIO0, 27U, &led_config);
GPIO_PinInit(GPIO1, 2U, &led_config);
GPIO_PinInit(GPIO0, 6U, &key_config);
GPIO_PortSet(GPIO0, 1U << 10U);
GPIO_PortSet(GPIO0, 1U << 27U);
GPIO_PortSet(GPIO1, 1U << 2U);
while (1)
{
if ((GPIO_PinRead(GPIO0, 6U))==0)
{
if (n==0)
{
GPIO_PortClear(GPIO0, 1U << 10U);
}
if (n==1)
{
GPIO_PortSet(GPIO0, 1U << 10U);
GPIO_PortClear(GPIO0, 1U << 27U);
}
if (n==2)
{
GPIO_PortSet(GPIO0, 1U << 27U);
GPIO_PortClear(GPIO1, 1U << 2U);
}
if (n==3)
{
GPIO_PortSet(GPIO1, 1U << 2U);
GPIO_PortClear(GPIO0, 1U << 10U);
GPIO_PortClear(GPIO0, 1U << 27U);
}
if (n==4)
{
GPIO_PortSet(GPIO0, 1U << 10U);
GPIO_PortClear(GPIO1, 1U << 2U);
}
if (n==5)
{
GPIO_PortSet(GPIO0, 1U << 27U);
GPIO_PortClear(GPIO0, 1U << 10U);
}
if (n==6)
{
GPIO_PortClear(GPIO0, 1U << 10U);
GPIO_PortClear(GPIO0, 1U << 27U);
GPIO_PortClear(GPIO1, 1U << 2U);
}
if (n==7)
{
GPIO_PortSet(GPIO0, 1U << 10U);
GPIO_PortSet(GPIO0, 1U << 27U);
GPIO_PortSet(GPIO1, 1U << 2U);
}
delay2();
while(((GPIO_PinRead(GPIO0, 6U))==0));
n=(n+1)%8;
}
}
}
经程序的编译和下载,可得到预期的效果,参见图2至图8所示。
图2 显示红色
图3 显示绿色
图4 显示蓝色
图5 显示黄色
图6 显示粉色
图7 显示亮蓝
图8 显示白色
|