使用KEIL MDK环境,移植到STM32L051C8单片机上,根据网上资料与里程总结如下:

1、创建STM32工程。

2、复制contiki-3.0目录下,core、cpu文件夹到工程目录下

3、保留core下sys文件夹和.h文件,其他文件夹删除

4、保留cpu\arm\stm32f103\clock.c文件,其他删除

5、复制contiki-3.0\platform\stm32test\contiki-conf.h配置文件到core目录下

目录如下

6、添加文件到keil工程,.c与.h

7、更改clock函数

a)系统时钟中断函数更改

b)系统时钟初始化函数更改

更改后如图

8、配置contiki

在contiki-conf.h文件中添加#define AUTOSTART_ENABLE1u,使能进程自动运行功能

其他配置日后在一点点研究

9、编译工程

会有错误,屏蔽掉找不到的头文件。

直到编译成功

10、编写进程例子

编写两个进程,一个进程打印hello ,另一个进程打印world,间隔时间1s打印一次,通过串口打印。

a)先声明注册进程

PROCESS(PrintfHello_ps, "Hello");
PROCESS(PrintWorld_ps, "World");

b)自动启动的进程放到自动启动数组中

AUTOSTART_PROCESSES(&PrintfHello_ps, &PrintWorld_ps);

c)创建事件标志变量

static process_event_t event_flag;

d)打印hello线程

PROCESS_THREAD(PrintfHello_ps, ev, data)

{

//线程开始

PROCESS_BEGIN();

//定义一个事件定时器

static struct etimer timer; 
  //设置事件定时器时间,并绑定为当前进程,溢出时间1s
  etimer_set(&timer, 1*CLOCK_SECOND );
  printf("PrintfHello_ps start\n");
  //分配一个新的事件
  event_flag = process_alloc_event();

while (1)
  {
    //等待定时器超时事件

PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);

//打印 hello

printf("hello ");
    //投递事件,把event_flag这个事件投递到PrintWorld_ps进程,数据参数为NULL
    process_post(&PrintfHello_ps, event_flag, NULL);
    //复位定时器,重新开始计时
    etimer_reset(&timer);
  }
  PROCESS_END();

}

e)打印world进程

PROCESS_THREAD(PrintWorld_ps, ev, data)
{
PROCESS_BEGIN();
printf("PrintfWorld_ps start\n");
while (1)
{
//等待event_flag事件
PROCESS_WAIT_EVENT_UNTIL(ev == event_flag);
//打印world.
printf("world.\n");
}
PROCESS_END();

}

f)主函数

int main(void){
  /* Configure the system clock to 32 MHz */
        SystemClock_Config();
PeripheralClock_Config();

BspHardwareInit();
//contiki时钟初始配置

clock_init();

//进程初始化

process_init();

//开始事件定时器

process_start(&etimer_process, NULL);

//自动启动线程

autostart_start(autostart_processes);

while(1) {
    do {
    } while(process_run() > 0);
    idle_count++;
    /* Idle! */
    /* Stop processor clock */
    /* asm("wfi"::); */ 
  }
  return 0;

}

11、输出结果

二、Contiki移植相关推荐

  1. 嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX

    嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX 本篇笔记将简单介绍RTX,包括基本架构,如何在Keil中配置.需要安装ARM-MDK和一块硬件板,笔记以STM32F4Discovery为例子 ...

  2. [嵌入式] 重温Mini2440(二)移植Linux-4.9.270

    重温Mini2440(二)移植Linux-4.9.270 一. 获取Linux内核 二. 安装编译工具 三. 配置内核 四. 修改驱动 五. 生成uImage 六. U-Boot引导内核 一. 获取L ...

  3. U-Boot移植教程之二:移植

    内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.U-Boot移植 开发板smdk2410的配置适用于大多数S3C2410单板,或是只需要极少的修改即可使用.但是目前U-Boot中 ...

  4. tiny4412学习(二)之移植linux-4.x支持设备树

    硬件平台:tiny4412 系统:linux-4.4 文件系统:busybox-1.25 编译器: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 2014 ...

  5. ThreadX应用开发笔记之二:移植ThreadX到STM32H7平台

      前面我们将ThreadX成功移植到了STM32F4平台,但这只是我们的部分应用.我们希望将ThreadX的优势发挥到我们的更多应用中,所以在这一篇中我们就来实现将ThreadX移植到STM32H7 ...

  6. android变声后的文件,仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题...

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...

  7. [二] Nuttx移植-星瞳pyboard开发板

    目录 一.Nuttx配置文件 二.构建自己的配置文件 1. include/board.h文件构建 2. kernel && scripts 构建 3. nsh/defconfig 构 ...

  8. 仿QQ语音变声功能实现(二)---移植到android studio 并解决部分问题

    版权声明:转载必须注明本文转自张鹏辉的博客: http://blog.csdn.net/qingtiangg 大家好,距离上一篇博客半年过去了,关于上一篇博客很多人加我QQ留言问了几个问题,最近不忙决 ...

  9. 二、移植u-boot-2016.03到Jz2440之启动过程分析

    2.u-boot-2016.03启动过程分析     从添加Jz2440单板这一节可知,成功添加Jz2440单板后,把编译好的u-boot.bin烧写到Jz2440开发板,重新启动开发板,开发板串口没 ...

最新文章

  1. 面试题:如何理解 Linux 的零拷贝技术?
  2. rlwrap 让Linux下的sqlplus变得好用
  3. Web Cookie详解
  4. python3.6安装-python3.6的安装及注意事项
  5. c语言复制的代码不能运行,刚学C语言,在Linux下写的代码能正常编译,复制到VC下就无法运行...
  6. spring javafx_带有Spring的JavaFX 2
  7. php 中 的含义
  8. centos 7下安装mysql
  9. JavaScript 求和(字符串转换成数组、for循环求和)
  10. VAST2 0视频广告投放解决方案改变视频网站未来技术格局
  11. python九宫格矩阵排数
  12. W3af详细安装与基本使用
  13. Egret Wing常用快捷键
  14. 秘笈大公开 | 魏泓手把手教你利用无菌动物,提高国自然中标率!
  15. Could not enlist in transaction on entering meta-aware object!”
  16. 三行代码搭建一个全能书籍系统(wiki)
  17. 简单的前后端交互的案例
  18. 详解 AJAX-SpringBoot 前后端数据交互
  19. 刮刮乐、幸运大转盘 1
  20. mysql144,通过phpMyAdmin从MySQL错误144中恢复

热门文章

  1. 解决Could not build wheels for pikepdf which use PEP 517 and cannot be installed directly
  2. android+ios+账号互通,ios和安卓游戏账号能互通吗?
  3. Android调用系统输入法
  4. Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
  5. 服务器柜机位置摆放电子图,柜式空调摆放位置有什么要注意的吗
  6. plex插件显示无服务器,deepin 15.11 安装plex和插件
  7. 攻壳机动队中的塔奇克马有灵魂吗?烧脑深度思考,慎点
  8. 令狐冲和TCP/IP协议的第三层协议的关系(经典)
  9. vite:vue中引入图片报错require is not defined
  10. 服务器网页篡改,网站服务器网页防篡改系统