96|0

98

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【MCXN947开发板测评】以按键切换色彩 [复制链接]

本帖最后由 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 显示白色

 

此帖出自NXP MCU论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表