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<

              Delay.delayMs(400);   //延时显示500ms

              PB_ODR |= 1<

      }

}

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

交流群728483370,一起学习加油!

交流群728483370,一起学习加油!

你可能感兴趣的:(C++在单片机上面的啪啪啪)