本帖最后由 笨,小黑 于 2015-2-3 22:36 编辑
拿到 Nucleo 已经一个多月了 因为公司项目的缘故,无法第一时间跟大家分享开发经验,实在抱歉。
作为研究生最后 一年的实习生,论文项目两边要兼顾,业余时间变得有点不够用。
论坛里搜索了一下,stm32区只有2篇关于contiki的帖子,关于6lowpan的更是没有
这里先给大家简单介绍一下contiki的移植步骤。
介绍一下: /****** baidu baike *****/Contiki 是一个适用于有内存的嵌入式系统的开源的、高可移植的、支持网络的多任务操作系统。包括一个多任务核心、TCP/IP 堆栈、程序集以及低能耗的无线通讯堆栈。Contiki 采用 C 语言开发的非常小型的嵌入式操作系统,运行只需要几K的内存。[1]
Contiki 是一个小型的,开源的,极易移植的多任务电脑操作系统。它专门设计以适用于一系列的内存受限的网络系统,包括从8位电脑到微型控制器的嵌入系统。它的名字来自于托尔·海尔达尔的康提基号。
Contiki只需几kilobyte的代码和几百字节的内存就能提供多任务环境和内建TCP/IP支持。
/****** baidu baike *****/
先确认下移植个什么任务最好,反正新的芯片到我手里,我最喜欢的就是点LED。1秒一闪,简单直观。
Contiki是事件驱动机制的,产生“事件“就是我们需要去做的事情。途径不多:通过时钟定时,定时事件到就产生一个事件;通过某种中断,某个中断发生,就产生某个事件例如外部中断。
- /***********
- contiki task
- ************/
- #include "stm32f0xx.h"
- #include <stdint.h>
- #include <stdio.h>
- #include <debug-uart.h>
- #include <clock.h>
- #include <sys/process.h>
- #include <sys/procinit.h>
- #include <etimer.h>
- #include <sys/autostart.h>
- #include "gpio_common.h"//gpio obj
- #ifdef CONFIG_GPIO_STM32F072RB
- #include "stm32f072_gpio.h"
- #else
- void led_init(void){} //空实现
- #endif
- PROCESS(blink_process, "LED"); //注册任务
- AUTOSTART_PROCESSES(&blink_process);
- //自动启动任务
- PROCESS_THREAD(blink_process, ev, data)
- //任务线程
- {
- PROCESS_BEGIN();
- while(1)
- {
- static struct etimer time_e;
- etimer_set(&time_e, CLOCK_SECOND);
- PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&time_e));
-
- GPIO_ResetBits(GPIO_LED_GR,GPIO_Pin_LED);
- //led on
- etimer_set(&time_e, CLOCK_SECOND);
- PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&time_e));
- GPIO_SetBits(GPIO_LED_GR,GPIO_Pin_LED);
- // led off
-
- }
- PROCESS_END();
- }
- int main()
- {
- uart_init(9600);
- led_init();
- printf("led init ok \r\n");
- //顺便可以知道串口是否初始化成功了
- clock_init();
- process_init();
- process_start(&etimer_process, NULL);
- autostart_start(autostart_processes);
- while(1) {
- ;
- }
复制代码
今天暂时写到这里,思路是搬运的自STM32的移植的。 空了继续写
|
有时会出现这样的情况。代码太长,可以分几段发,或者放在附件。