概述
STM8L_15_Contiki_OS_LED:
1.Contiki:Contiki OS所需文件
2.User:工程及main文件
3.Hardware:LED,CLK,Wag
4.STM8L15x_StdPeriph_Driver:STM8自带库文件
5.Debug:hex文件存放于EXE文件夹
6.readme: 使用Contiki OS 进行LED闪烁
Contiki OS仅需2KB RAM和40KB ROM,是开源的、高可移植的、支持网络的多任务操作系统,包括一个多任务核心、TCP/IP 堆栈、程序集以及低能耗的无线通讯堆栈,很适合LoRa、NB-IoT等无线传感器网络。
这里用仅仅Contiki实现LED闪烁。
/**
******************************************************************************
* @file main.c
* @author Alex——小白
* @version V1.0
* @date 2019.5.1
* @brief LED Blink By Contiki OS
* @store 有家Proteus仿真店子
* @Link https://shop484534014.taobao.com/
* @Email 844545015@qq.com
******************************************************************************
* @attention All Rights Reserved
**/
#include <string.h>
#include <stdio.h>
#include "contiki.h"
#include "etimer.h"
#include "stm8l15x.h"
#include "LED.h"
#include "CLK.h"
PROCESS(blink_process,"Blink"); //申请一个进程
AUTOSTART_PROCESSES(&blink_process,);
PROCESS_THREAD(blink_process,ev,data) //LED0 Blink/s 函数,是进程的方法
{
PROCESS_BEGIN(); //进程开始
while(1) //一个进程就是一个死循环
{
static struct etimer et; //申请一个etimer结构体,切勿去掉static
etimer_set(&et,CLOCK_SECOND);
PROCESS_YIELD(); //进程自我阻塞,当外部消息(此处为定时器中断)刺激才触发
if(PROCESS_EVENT_TIMER == ev) //判断消息是否etimer的1s超时
{
LED1_Toggle();
LED0_Toggle();
etimer_restart(&et); //重启et,为下1s定时
}
}
PROCESS_END(); //进程结束
}
void main(void)
{
/* Initialize hardware */
CLK_HSI_Config(CLK_SYSCLKDiv_1); //CLK init
LED_Init(); //LED init
clock_init(); //Systerm Tick
/* EXPLAIN: enable INT before initialize process! */
enableInterrupts();
/* Initialize contiki system */
process_init();
process_start(&etimer_process, NULL);
autostart_start(autostart_processes);
while (1)
{
while (process_run() > 0)
{
;
}
}
}
如需下载Proteus仿真文件和Keil工程,请关注公众号:
Proteus仿真店子
(若IAR IDE编译器以及驱动,后台回复:IAR;若STM8L相关参考文档,后台回复:STM8L手册;若需其它设计,后台回复:STM8L设计)
最后
以上就是健康煎蛋为你收集整理的STM8L151C8单片机学习例程(15)——Contiki_OS_LED的全部内容,希望文章能够帮你解决STM8L151C8单片机学习例程(15)——Contiki_OS_LED所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复