嵌入式

STM32用C++开发

都知道Arduino 库是用c++开发的,那stm32能不能用c++开发呢?
其实很简单,连设置都不需要,试了试发现很容易实现c++开发。

0x01:新建一个名叫led.h的文件,内容如下:

#ifndef _LED_H_
#define _LED_H_

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

class Led{
    public:
        Led(){
            ledInit();
        };
        void led1On();
        void led1Off();
        void led2On();
        void led2Off();
        void ledDelay();
    private:
        void ledInit(void);
        GPIO_InitTypeDef GPIO_InitStruct;   
};

void Led::ledInit(void)
{
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOC, &GPIO_InitStruct);
}

void Led::led1Off()
{
    GPIO_ResetBits(GPIOC, GPIO_Pin_13); 
}

void Led::led1On()
{
    GPIO_SetBits(GPIOC, GPIO_Pin_13);   
}

void Led::ledDelay()
{
    for(int32_t i=0xfffef; i>0; i--);
}

#endif

0x02:新建一个main.cpp 的文件,内容如下:

#include "stm32f10x.h"
#include "led.h"

int main()
{
    Led led;
    while(1)
    {
        led.led1On();
        led.ledDelay();
        led.led1Off();
        led.ledDelay();
    }
}

0x03:编译,0错误,下载 成功点亮led

参考文献:
学习C++ -> 类(Classes)的定义与实现

回复

This is just a placeholder img.