你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 Nucleo的contiki移植 (一)准备工作

[复制链接]
笨,小黑 发布时间:2015-2-3 22:25
本帖最后由 笨,小黑 于 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是事件驱动机制的,产生“事件“就是我们需要去做的事情。途径不多:通过时钟定时,定时事件到就产生一个事件;通过某种中断,某个中断发生,就产生某个事件例如外部中断。
  1. /***********
  2. contiki task
  3. ************/
  4. #include "stm32f0xx.h"
  5. #include <stdint.h>
  6. #include <stdio.h>
  7. #include <debug-uart.h>
  8. #include <clock.h>
  9. #include <sys/process.h>
  10. #include <sys/procinit.h>
  11. #include <etimer.h>
  12. #include <sys/autostart.h>
  13. #include "gpio_common.h"//gpio obj
  14. #ifdef CONFIG_GPIO_STM32F072RB
  15. #include "stm32f072_gpio.h"
  16. #else
  17. void led_init(void){} //空实现
  18. #endif

  19. PROCESS(blink_process, "LED"); //注册任务
  20. AUTOSTART_PROCESSES(&blink_process);
  21. //自动启动任务
  22. PROCESS_THREAD(blink_process, ev, data)
  23. //任务线程
  24. {

  25.   PROCESS_BEGIN();
  26.   while(1)
  27.   {
  28.     static struct etimer time_e;
  29.     etimer_set(&time_e, CLOCK_SECOND);
  30.     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&time_e));
  31.    
  32.     GPIO_ResetBits(GPIO_LED_GR,GPIO_Pin_LED);
  33. //led on
  34.     etimer_set(&time_e, CLOCK_SECOND);
  35.     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&time_e));
  36.     GPIO_SetBits(GPIO_LED_GR,GPIO_Pin_LED);
  37. // led off
  38.    
  39.   }
  40.    PROCESS_END();
  41. }


  42. int main()
  43. {
  44.   uart_init(9600);
  45.   led_init();
  46.   printf("led init ok \r\n");
  47. //顺便可以知道串口是否初始化成功了
  48.   clock_init();
  49.   process_init();
  50.   process_start(&etimer_process, NULL);
  51.   autostart_start(autostart_processes);
  52.   while(1) {
  53.    ;
  54. }
复制代码


今天暂时写到这里,思路是搬运的自STM32的移植的。 空了继续写




收藏 评论6 发布时间:2015-2-3 22:25

举报

6个回答
笨,小黑 回答时间:2015-2-3 22:26:04
我写的代码那么多  被吞了?
jingangshi521 回答时间:2015-2-3 23:36:56
好贴子 !!!
shaoziyang 回答时间:2015-2-3 23:39:21
笨,小黑 发表于 2015-2-3 22:26
我写的代码那么多  被吞了?

有时会出现这样的情况。代码太长,可以分几段发,或者放在附件。
0406445 回答时间:2015-9-10 06:37:23
楼主求更新
anny 回答时间:2015-9-10 08:21:04
代码打包好点
happy1993 回答时间:2016-5-5 16:40:54
楼主请问你是用什么工具开发的?keil?IAR?还是直接在linux下makefile?

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版