首页 > 代码库 > 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群: 嵌入式交流群
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。