嵌入式系统第四次作业

一、给出  gpio_set(LIGHT_RED,LIGHT_OFF); 语句中, LIGHT_RED和LIGHT_OFF的值是多少?贴出每一步的查找截图

①导入工程文件GPIO-BlueLight_20230328:

 ②在主函数中找到gpio_set(LIGHT_RED,LIGHT_OFF)语句:

  ③点击查看定义后跳转到user.h中,可以看到LIGHT_RED的值为PTB_NUM|7,而LIGHT_OFF的值为1:

④查看PTB_NUM的定义:

⑤跳转到gpio.h文件中,可以看到PTB_NUM的值为1<<8,即是0000 0001 0000 0111:

综上,LIGHT_RED的值为0000 0001 0000 0111,LIGHT_OFF的值为1。

二、用直接地址编程方式,实现红绿蓝三灯轮流闪烁

  ①导入直接地址编程文件:

  ②编写三灯轮流闪烁程序:

  ③编译文件查看运行结果:

三.用调用构件方式,实现红绿蓝的八种组合轮流闪烁

  ①导入构件工程文件:

  ②增加灯光颜色交换变量:

  ③初始化红绿蓝灯:

  ④编写八种组合灯光闪烁程序:

if (mColorCount=='0')                  //判断灯的颜色组合情况
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_ON);     //红灯亮
			gpio_set(LIGHT_GREEN,LIGHT_OFF);  //绿灯暗
			gpio_set(LIGHT_BLUE,LIGHT_OFF);   //蓝灯暗
			printf(" 红灯:亮\n  绿灯:暗\n  蓝灯:暗\n");   //串口输出灯的状态
			continue;
		}
        //(2.3.3)如灯状态标志mFlag为'A',改变灯状态及标志
		if(mColorCount=='1')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_OFF);     //红灯暗
			gpio_set(LIGHT_GREEN,LIGHT_ON);    //绿灯亮
			gpio_set(LIGHT_BLUE,LIGHT_OFF);    //蓝灯暗
			printf(" 红灯:暗\n  绿灯:亮\n  蓝灯:暗\n");   //串口输出灯的状态
			continue;
		}
		if(mColorCount=='2')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_OFF);     //红灯暗
			gpio_set(LIGHT_GREEN,LIGHT_OFF);   //绿灯暗
			gpio_set(LIGHT_BLUE,LIGHT_ON);     //蓝灯亮
			printf(" 红灯:暗\n  绿灯:暗\n  蓝灯:亮\n");   //串口输出灯的状态
		}
		if(mColorCount=='3')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_ON);      //红灯亮
			gpio_set(LIGHT_GREEN,LIGHT_ON);    //绿灯亮
			gpio_set(LIGHT_BLUE,LIGHT_OFF);    //蓝灯暗
			printf(" 红灯:亮\n  绿灯:亮\n  蓝灯:暗\n");   //串口输出灯的状态
			continue;
		}
		if(mColorCount=='4')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_OFF);     //红灯暗
			gpio_set(LIGHT_GREEN,LIGHT_ON);    //绿灯亮
			gpio_set(LIGHT_BLUE,LIGHT_ON);     //蓝灯亮
			printf(" 红灯:暗\n  绿灯:亮\n  蓝灯:亮\n");   //串口输出灯的状态
			continue;
		}
		if(mColorCount=='5')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_ON);     //红灯亮
			gpio_set(LIGHT_GREEN,LIGHT_OFF);    //绿灯暗
			gpio_set(LIGHT_BLUE,LIGHT_ON);    //蓝灯亮
			printf(" 红灯:亮\n  绿灯:暗\n  蓝灯:亮\n");   //串口输出灯的状态
			continue;
		}
		if(mColorCount=='6')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='L';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_ON);     //红灯暗
			gpio_set(LIGHT_GREEN,LIGHT_ON);    //绿灯暗
			gpio_set(LIGHT_BLUE,LIGHT_ON);    //蓝灯暗
			printf(" 红灯:暗\n  绿灯:暗\n  蓝灯:暗\n");   //串口输出灯的状态
			continue;
		}
		if(mColorCount=='7')
		{
			mLightCount++;  
			mColorCount++;
			printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
			mFlag='A';                       //灯的状态标志
			gpio_set(LIGHT_RED,LIGHT_ON);     //红灯亮
			gpio_set(LIGHT_GREEN,LIGHT_ON);    //绿灯亮
			gpio_set(LIGHT_BLUE,LIGHT_ON);    //蓝灯亮
			printf("红灯:亮\n绿灯:亮\n蓝灯:亮\n");   //串口输出灯的状态
		    continue;
		}

  ⑤编译文件查看结果:

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值