C++在单片机上面的啪啪啪

皮毛的学习了C++,接触之后感觉棒棒哒,爱不释手,但C++又表现出其高深莫测。各种封装编程爽歪歪,最近想去了IAR编译软件支持C++,支持对MSP430,ARM,STM8等单片机编程。有种想用C++来单片机的开发,小试牛刀了下,但是IAR软件没有自动补全的功能,这对于编程来说有点不爽,效率也不高。但是单片机每个模块的封装接口并不是很多,因而编程上面也要求不是很高。封装体现出来的是只要实例化一个模块,很方便即可对里面应用层面接口的调用,而设备资源的初始化已交给构造函数执行,只要一实例化对象,即会完成初始。这个都不用开发者去初始化,也不用再担心忘记了对设备资源的初始化。下面是我的一个小试牛刀模块,关于LED灯模块。(开发平台IAR)

这是点C源文件

#include "DX_led.h"

DX_Led::DX_Led()
{
    initGpio();
}
DX_Led::~DX_Led()
{
      
}

/**********************
  LED引脚设置函数
***********************/
void DX_Led::initGpio(void)
{
      PB_DDR |= 0x0F;
      PB_CR1 |= 0x0F;
      PB_ODR |= 0x0F; //先全部关灯
}


/**********************
     falsh led
***********************/
void DX_Led::flashLed()
{
      for(unsigned char i=0; i<4; i++)
      {
              PB_ODR &= ~(1<<i);    //点亮对应的灯
              Delay.delayMs(400);   //延时显示500ms
              PB_ODR |= 1<<i;    //关闭对应的灯
      }
}
void DX_Led::switchLed0()
{
      LED0 = ~LED0;
}
void DX_Led::switchLed1()
{
      LED1 = ~LED1;
}
void DX_Led::switchLed2()
{
      LED2 = ~LED2;
}
void DX_Led::switchLed3()
{
      LED3 = ~LED3;
}
void DX_Led::switchAllLed()
{
      switchLed0();
      switchLed1();
      switchLed2();
      switchLed3();
}


void DX_Led::lightLed0(bool Status)
{
   if(Status)
      LED0 = 0;
   else 
      LED0 = 1;
}
void DX_Led::lightLed1(bool Status)
{
   if(Status)
      LED1 = 0;
   else 
      LED1 = 1;  
}


void DX_Led::lightLed2(bool Status)
{
   if(Status)
      LED2 = 0;
   else 
      LED2 = 1;  
}
void DX_Led::lightLed3(bool Status)
{
   if(Status)
      LED3 = 0;
   else 
      LED3 = 1; 
}

头文件


/* **************************************************
*描述:本实验用操作寄存器位定义的方法点亮 LED0
*硬件连接:
*LED0 -> PB0
*LED1 -> PB1
*LED2 -> PB2
*LED3 -> PB3
******************************************************/
#ifndef __DX_LED_H__
#define __DX_LED_H__


#include "iostm8s105c6.h"
#include "DX_led.h"
#include "DX_delay.h"




#define   LED0    PB_ODR_ODR0 //将PB口的bit0定义为led0
#define   LED1    PB_ODR_ODR1
#define   LED2    PB_ODR_ODR2
#define   LED3    PB_ODR_ODR3


class DX_Led
{
  
private:
    DX_Delay Delay;
    void initGpio();
  
public:
    void flashLed();
    
    void lightLed0(bool Status);
    void lightLed1(bool Status);
    void lightLed2(bool Status);
    void lightLed3(bool Status);
    
    void switchLed0();
    void switchLed1();
    void switchLed2();
    void switchLed3();
    void switchAllLed();
    DX_Led();
    ~DX_Led();
};


#endif

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机面试主要是围绕单片机的基础知识、应用能力和解决问题的能力展开的。首先,面试官会问一些关于单片机的基础知识,如单片机的定义、特点、工作原理、常用的单片机有哪些等等。应聘者需要对这些基础知识有清晰的理解和掌握。 接下来,面试官可能会让应聘者解决一些简单的编程问题或是设计一些基本的电路图。这要求应聘者能够熟练使用单片机集成开发环境(IDE)进行编程,并能够应用各种编程语言(如C语言、汇编语言等)来编写单片机程序,实现一些基本的功能。同时,应聘者还要能够根据给定的要求画出相应的电路图并进行调试。 此外,面试官还可能针对应聘者的工作经验和项目经历进行提问。应聘者需要能够清楚地解释自己在该领域的工作经验,并能够详细说明自己参与的项目及承担的任务,以及在项目中遇到的问题和解决方案。 最后,面试官还可能询问应聘者对未来单片机发展的看法和对该岗位的职业规划等问题。这要求应聘者对单片机相关的最新技术和趋势保持关注,并能够展示自己对该领域的热情和学习能力。 综上所述,单片机面试主要考察应聘者对单片机基础知识的掌握程度、编程能力和解决问题的能力,以及对该领域的了解和学习能力。应聘者需要准备好相关的知识和项目经验,并能够清晰地回答面试官的问题,展示自己的能力和潜力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值