偶完全是个新手,十年前学过C,觉得STM8挺好玩的,就在某宝上淘了一个最小系统,这两天摸了一下,把LED点着了,挺有成就感的,以后就混这里了,大家不要嫌弃我呀。
我把程序试着改了一下,改成C++形式的,各位大师指点一下,这样用行不?只是在坛子里很少人用C++,不合适?我看MAP文件的输出,CODE并不大
//led.h
#ifndef _LED_H
#define _LED_H
#include "stm8s.h"
class LED
{
public:
LED(GPIO_TypeDef *, uint8_t);
void ON();
void OFF();
void ON_OFF();
private:
GPIO_TypeDef *m_gpio;
uint8_t m_bit;
};
#endif
//led.cpp
#include "led.h"
LED::LED(GPIO_TypeDef * a, uint8_t b)
{
m_gpio = a;
m_bit = b;
SetBit(m_gpio->DDR, m_bit);
SetBit(m_gpio->CR1, m_bit); // 推挽输出
}
void LED::ON()
{
SetBit(m_gpio->ODR, m_bit);
}
void LED::OFF()
{
ClrBit(m_gpio->ODR, m_bit);
}
void LED::ON_OFF()
{
ChgBit(m_gpio->ODR, m_bit);
}
// main.cpp
#include "led.h"
#include "stm8s.h"
void delay_ms(unsigned int ms)
{
unsigned char i;
while(ms!=0)
{
for(i=0;i<250;i++)
{nop();}
for(i=0;i<75;i++)
{}
ms--;
}
}
void main()
{
LED Red_led(GPIOB, 5); // 生成一个红色LED对象,接在PB5
while (TRUE)
{
delay_ms(500);
Red_led.ON_OFF();
}
}
|