第四章作业

1.学习CH04示例程序,包括gpio.c和4个工程中的main.C.

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

所以LIGHT_RED的值为264,LIGHT_ OFF的值为1

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

    for(;;)     //for(;;)(开头)
    {
        
        //(2.1)主循环次数+1,并判断是否小于特定常数
        mMainLoopCount++;                         //+1
        if (mMainLoopCount<=6556677)  continue;   //如果小于特定常数,继续循环
        //(2.2)主循环次数超过特定常数,灯状态进行切换(这样灯会闪烁)
        mMainLoopCount=0;      //清主循环次数
        //切换灯状态
       if (mFlag=='A')   //若灯状态标志为'A'
        {   *gpio_bsrr|=(1<<7); 
		    *gpio_brr|=(1<<9);     //设置灯“亮”
            printf("蓝灯:亮\r\n");  //通过调试串口输出灯的状态
            mFlag='B';             //改变状态标志
        }
        else  if(mFlag=='B')                 //否则,若灯状态标志不为'A'    
        {
		    *gpio_bsrr|=(1<<9);     //设置灯“暗”
		     *gpio_brr|=(1<<8);  
            printf("绿灯:亮\r\n");   //通过调试串口输出灯的状态
           mFlag='C';              //改变状态标志
           
        }	
        else if(mFlag=='C'){
        *gpio_bsrr|=(1<<8);     //设置灯“暗”
		 *gpio_brr|=(1<<7);  
         printf("红灯:亮\r\n");   //通过调试串口输出灯的状态
        mFlag='A'; 
         
          }
   
  
        
    } 

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

//(1.5)用户外设模块初始化
	gpio_init(LIGHT_RED,GPIO_OUTPUT,LIGHT_OFF);	//初始化红灯
	gpio_init(LIGHT_GREEN,GPIO_OUTPUT,LIGHT_OFF);	//初始化绿灯
    gpio_init(LIGHT_BLUE,GPIO_OUTPUT,LIGHT_OFF);	//初始化蓝灯


for(;;)   //for(;;)(开头)
	{
//(2.1)主循环次数变量+1
        mMainLoopCount++;
//(2.2)未达到主循环次数设定值,继续循环
		if (mMainLoopCount<=12888999)  continue;
//(2.3)达到主循环次数设定值,执行下列语句,进行灯的亮暗处理
//(2.3.1)清除循环次数变量
		mMainLoopCount=0; 
//(2.3.2)如灯状态标志mFlag为'L',灯的闪烁次数+1并显示,改变灯状态及标志
		  if (mFlag=='A')                    //红灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_OFF);
            gpio_set(LIGHT_GREEN,LIGHT_OFF);
            gpio_set(LIGHT_BLUE,LIGHT_ON);
            printf(" 蓝灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='B')                    //绿灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_OFF);
            gpio_set(LIGHT_GREEN,LIGHT_ON);
            gpio_set(LIGHT_BLUE,LIGHT_OFF);
            printf(" 绿灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='C')                    //黄灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_OFF);
            gpio_set(LIGHT_GREEN,LIGHT_ON);
            gpio_set(LIGHT_BLUE,LIGHT_ON);
            printf(" 青色灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='D')                    //蓝灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_ON);
            gpio_set(LIGHT_GREEN,LIGHT_OFF);
            gpio_set(LIGHT_BLUE,LIGHT_OFF);
            printf(" 红灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='E')                    //紫灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_ON);
            gpio_set(LIGHT_GREEN,LIGHT_OFF);
            gpio_set(LIGHT_BLUE,LIGHT_ON);
            printf(" 紫灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='F')                    //青灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_ON);
            gpio_set(LIGHT_GREEN,LIGHT_ON);
            gpio_set(LIGHT_BLUE,LIGHT_OFF);
            printf(" 黄灯亮--\n");   //串口输出灯的状态
        }
        else if (mFlag=='G')                    //白灯
        {
            mLightCount++;  
            printf("灯的闪烁次数 mLightCount = %d\n",mLightCount);
            mFlag++;                       //灯的状态标志
            gpio_set(LIGHT_RED,LIGHT_ON);
            gpio_set(LIGHT_GREEN,LIGHT_ON);
            gpio_set(LIGHT_BLUE,LIGHT_ON);
            printf(" 白灯亮--\n");   //串口输出灯的状态
        }
//(2.3.3)如灯状态标志mFlag为'A',改变灯状态及标志
        else                                    //灯灭
        {
            mFlag='A';                       //灯的状态标志
            gpio_set(LIGHT_GREEN,LIGHT_OFF); //灯“暗”
            gpio_set(LIGHT_RED,LIGHT_OFF);
            gpio_set(LIGHT_BLUE,LIGHT_OFF);
            printf(" 灯灭--\n");  //串口输出灯的状态
        }
	}  //for(;;)结尾

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值