SmartOS之------小鬼点灯

 

作用


 

让两个小灯每0.3秒闪一次。
引用固件库和SmartOS库,芯片STM32F030F4P6(这芯片小指指甲那么大一点),闪存16k,内存4k

 

代码


 

 1 #include "Sys.h"

 2 #include "Port.h"

 3 

 4 void LedTask(void* param)

 5 {

 6     OutputPort* leds = (OutputPort*)param;

 7     *leds = !*leds;

 8 }

 9 

10 int main(void)

11 {

12     // 初始化系统

13     //Sys.Clock = 136000000;

14     Sys.MessagePort = COM1; // 指定printf输出的串口

15     Sys.Init();

16     Sys.ShowInfo();

17 

18     // 初始化为输出

19     Pin pins[] = {PD0, PD1};

20     OutputPort leds(pins, ArrayLength(pins));

21     Sys.AddTask(LedTask, &leds, 0, 300000);

22 

23     Sys.Start();

24 }

 

讲解



输出类OutputPort,这里用一组(PD组)引脚初始化,默认50M开漏输出。
当然,它有多种构造函数,可以指定速度和开漏还是推挽输出,用户根据自己需要进行选择。

想Sys添加一个轮询任务,leds对象作为参数传进去,0秒后立刻执行,每300ms执行一次

LedTask里面先把param转回来输出口指针,就是前面添加任务时传进来的那个leds,然后取反实现闪烁。
其实也可以这样:
bool flag = leds; // 读取小灯状态
leds = !flag; // 设置小灯状态
当然,完整的写法应该是这样:
bool flag = leds.Read(); // 读取小灯状态
leds.Write(!flag); 
// 设置小灯状态


End!

------来自新生命团队!

欢迎大家一起交流 ,分享程序员励志故事。   幸福的程序员 QQ群幸福的程序员  嵌入式交流群中国嵌入式物联网群

 

 

 

你可能感兴趣的:(OS)