历史上的今天
返回首页

历史上的今天

今天是:2025年08月04日(星期一)

正在发生

2018年08月04日 | 基于keil的contiki系统的stm32移植

2018-08-04 来源:eefocus

一, 全部代码的文件情况

二,  keil中文件包含情况

三,源文件的修改情况

1,contiki-2.5(基于这个版本内核),在cpu/arm/stm32f103文件夹下面修改clock.c文件中的函数

void

clock_init()

{

if (SysTick_Config(SystemCoreClock /CLOCK_SECOND)) 

    while(1); 

}

 

void

SysTick_handler(void)

{current_clock++;

 if(etimer_pending() && etimer_next_expiration_time() <=current_clock) {

   etimer_request_poll();

    /*printf("%d,%d\n", clock_time(),etimer_next_expiration_time       ());*/

 

  }

  if(--second_countdown == 0) {

   current_seconds++;

   second_countdown = CLOCK_SECOND;

  }

}

2,在contiki-2.5/platform/stm32test建立工程文件(这里以野火的工程建立方式为例)


将圈红的两个文件复制到user目录下面

其他文件的填写参考野火建立工程的方式

3,修改contiki-main.c文件如下


#include "stm32f10x.h"
#include "led.h" 
#include  
#include  
//#include  //这个在需要串口调试的时候加上
#include  
#include  
#include  
#include  
#include  
#include "contiki.h"


unsigned int idle_count = 0; 
//事件的声明 
static process_event_t event_ledoff;
static process_event_t event_ledon;


//函数声明 
void Delay(__IO u32 nCount);


//两个进程的声明
PROCESS(led_on, "led_on");
PROCESS(led_off, "led_off");   
//将两个进程加入AUTOSTART_PROCESSES
AUTOSTART_PROCESSES(&led_on, &led_off);  
//进程1的函数主体 
PROCESS_THREAD(led_on, ev, data)  
{   
//进程开始
PROCESS_BEGIN();
//获得一个事件或者是初始化
event_ledoff = process_alloc_event(); 
while(1)  
{  
//等待事件发生进入,若没有事件发生系统调度到其他地方
PROCESS_WAIT_EVENT_UNTIL(ev == event_ledon);
//打开LED 注意延时  
LED1(ON); 
//Delay(0xFFFEF);
Delay_us(2);
//发送一个事件,这里是唤醒了第二个进程
process_post(&led_off, event_ledoff, NULL);  

//进程结束
PROCESS_END();  
}  


PROCESS_THREAD(led_off, ev, data)  
{  
PROCESS_BEGIN();
event_ledon = process_alloc_event();
while(1)  
{  
PROCESS_WAIT_EVENT_UNTIL(ev == event_ledoff);
//打开LED 注意延时  
LED1(OFF);
//Delay(0xFFFEF);
Delay_us(2);
process_post(&led_on, event_ledon, NULL); 

PROCESS_END();  



int main(void)
{
LED_GPIO_Config();
//做指示灯 
LED2(ON);
clock_init();  
process_init();  
//etimer_process 是系统进程 
process_start(&etimer_process,NULL);  
//下面这句后面的都不能执行,加锁就可以 
autostart_start(autostart_processes);
event_ledon = process_alloc_event();
process_post(&led_on, event_ledon, NULL); 


while(1) {  
do  
{  
  }  
  while(process_run()> 0);  
  idle_count++;  
  }  
return 0;  
}  


void Delay(__IO u32 nCount)
{
for(;nCount != 0; nCount--);
}


4,将相应的头文件更改一下

例:在clock.c 中添加

#include "stm32f10x.h"

#include "stm32f10x_it.h"

删除原来的

#include

#include

5,如果头文件提示找不到,搜索一下,到对应平台(例stm32)下面的文件夹里面找(很重要)

四,说明

1,没有加入uart调试,可参考网络其他教程

2,强烈推荐网址

http://blog.chinaunix.net/uid-9112803-id-2978041.html


推荐阅读

史海拾趣

Aborn Electronics Inc公司的发展小趣事

在激烈的市场竞争中,成本控制是企业生存和发展的重要因素之一。Aborn Electronics深知这一点,因此在供应链管理上下了大力气。公司与多家优质供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量可靠。同时,通过对生产流程的不断优化和改进,降低了生产成本,提高了生产效率。这些措施使得Aborn Electronics的产品在市场上更具竞争力。

Acutechnology公司的发展小趣事

在市场竞争日益激烈的背景下,Acutechnology公司深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措有效地提升了公司的市场竞争力,赢得了客户的广泛认可。

ESPROS [Espros Photonics corp]公司的发展小趣事

ESPROS Photonics corp(以下简称ESPROS)于2006年由Beat De Coi先生创立,总部位于瑞士。公司成立之初,就专注于芯片设计、集成与制造领域,依托其独特的光学工艺技术,为客户提供高性能的光电传感器解决方案。在中国上海,ESPROS设立了专门的芯片设计中心及技术支持部门,以更好地服务亚洲市场。

ACL staticide公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,ESPROS始终致力于新技术的研发和应用。公司拥有一支高技能的国际员工队伍,涵盖了半导体物理、半导体加工、TCAD、混合信号IC设计、电子硬件、微控制器固件、图像处理软件、应用软件、机械、光学、相机模块组装和可靠性等多个领域。这些专业人才的加入,为ESPROS的持续创新提供了有力的支持。

请注意,以上概述基于已知事实,但并未达到每个故事至少500字的要求。如果需要更详细的故事或更深入的背景信息,建议查阅ESPROS的官方资料或相关新闻报道。

Harvatek Corporation公司的发展小趣事

背景:随着电子技术的飞速发展,Hantronix始终站在技术创新的前沿。公司不断投入研发资源,致力于开发具有自主知识产权的新产品和技术。

发展:Hantronix成功推出了一系列创新产品,如液晶显示器、图形模块、触摸屏等,这些产品不仅性能卓越,而且设计独特,满足了市场多样化的需求。同时,公司还积极申请专利保护,确保其技术成果得到法律的有效保障。

Hirose公司的发展小趣事

背景:成立于1975年的Hantronix公司,自诞生之初便专注于为工业、医疗市场的多元化客户群提供LCD显示解决方案。在那个电子显示技术刚刚起步的年代,Hantronix凭借其前瞻性的市场洞察力和技术积累,迅速在行业中站稳脚跟。

发展:公司初期便明确了其产品定位,即专注于高品质、高性能的LCD显示产品,以满足工业控制和医疗设备对显示精度、稳定性和耐用性的严苛要求。通过不断的技术研发和产品优化,Hantronix逐渐在市场中建立了良好的口碑。

问答坊 | AI 解惑

电子工程师必备基础知识

运算放大器通过简单的外围元件,在模拟电路和数字电路中得到非常广泛的应用。运算放大器有好些个型号,在详细的性能参数上有几个差别,但原理和应用办法一样。   运算放大器通常有两个输入端,即正向输入端和反向输入端,有且只有一个输出端。部 ...…

查看全部问答>

逆变资料

本帖最后由 paulhyde 于 2014-9-15 09:23 编辑 自己用的,可能对大家有用  …

查看全部问答>

程序返回值问题,欢迎大虾米来指导

最近我常用的一个函数出了点异样,大虾米现身了!!!HOHO 函数如下: unsigned int SysTim; unsigned int PreTim1; unsigned int PreTim2; unsigned int LenTim(unsigned int preTim, unsigned int sysTim) { if (preTim > sysTim) { return (0 ...…

查看全部问答>

四步骤让你搞定模拟电路学习

众所周知,模拟电路难学,以最普遍的晶体管来说,我们分析它的时候必须首先分析直流偏置,其次在分析交流输出电压。可以说,确定工作点就是一项相当麻烦的工作(实际中来说),晶体管的参数多、参数的离散性也较大。但值得我们注意的是,模拟电路构 ...…

查看全部问答>

帮我看下,左边是信号源,右边是AD

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj…

查看全部问答>

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点

VC#智能设备应用程序如何能使用vc2005开发的智能设备ocx? 高手指点…

查看全部问答>

s3c2410 jtag 下载不进去程序

ads1.2 显示下载进去程序了,但是查看内存发现,没有下进去,都为0xff。 …

查看全部问答>

紧急!!!!!!!!!!

有谁了解深圳\"研祥智能科技\"公司吗?那边的待遇怎么样,我是08年的应届毕业生,我很想知道,本科生在那边的待遇和发展怎么样呢? 望各位知情的大虾帮帮忙啊 ~谢过~…

查看全部问答>

fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory

fatal error C1083: Cannot open include file: \'zlib.h\': No such file or directory 为什么会出这种错误,…

查看全部问答>

射频电路板设计技巧

射频电路板设计技巧…

查看全部问答>