首页 > 代码库 > SmartOS之------小鬼点灯

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群幸福的程序员  嵌入式交流群中国嵌入式物联网群