也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢出警告(为何keil没有报堆栈溢出??),网上有人说不用理会,但是实际使用时发生了错误(定义的常量数组值被改变,怀疑是堆栈溢出导致),发现使用的IAR版本不能完美支持使用的STM32芯片,换用高版本测试..(高版本正确,与低版本对芯片的支持有关) 2.开始时虽然会堆栈溢出,但是能够进入异常中断,进入…
关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 0 警告 然后修改下文件 startup_stm32f40xx.s DCD DebugMon_Handler ; Debug Monitor Handler DCD 0 ; Reserved ;DCD PendSV_Handler ; PendSV Handler ;DCD SysTick_Han…
多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OSSemCreate () 要使用 uC/OS 的多值信号量必须先声明和创建多值信号量,调用 OSSemCreate () 函数可以创建一个多值信号量. 3.OSSemPost () OSSemPost () 函数用于发布多值信号量. 4.OSSemPend () 与 OSSemPost () 多值信…
互斥信号量是 uC/OS 操作系统的一个内核对象, 与多值信号量非常相似,但它是二值的,只能是 0 或 1,所以也叫二值信号量, 主要用于保护资源. 1.如果想要使用互斥信号量,就必须事先使能互斥信号量. 互斥信号量的使能位于“os_cfg.h”. 2.OSMutexCreate () 要使用 uC/OS 的互斥信号量必须先声明和创建互斥信号量,调用 OSMutexCreate () 函数可以创建一个多值信号量. OSMutexCreate () 函数的定义位于“os_mutex.c”. 其中,…
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建立 Quartus II 工程 建立 Quartus II 工程时需要注意以下几点 1. 器件选择为 EP4CE10F17C8N: 2. 工程路径中不得出现非法字符(空格和中文字符): 3. 开发工具选择 Quartus II 11.0及以上,这里我选择的版本为 Quartus II 15.1. 4…
问题描述:      uc/os中任务创建 问题解决: 创建一个任务,任务从无到有.任务创建函数分两种, 一种是基本的创建函数OSTaskCreate, 另一种是扩展的任务创建函数OSTaskCreateExt. 着重讲解OSTaskCreate.     创建任务OS_TaskCreat.     堆栈初始化函数OSTaskStkInit的一个版本                         操作系统任务状态转换图 注:     OSTaskStkInit()        初始化堆栈  …
uC/OS 的任务调度解析 1.任务调度器启动之后(初始化,主要是TCB的初始化),就可以创建任务,开始任务调度了,实际上第一个任务准确的说不是进行任务切换,而是进行启动当前最高优先级任务.uC/OS使用的是OSStartHighRdy OSStartHighRdy LDR R0, =NVIC_SYSPRI14 ; Set the PendSV exception priority LDR R1, =NVIC_PENDSV_PRI STRB R1, [R0] MOVS R0, #0 ; Set…
LES BX, DWORD PTR DS:_OSTCBCur ;OSTCBCur->OSTCBStkPtr = SS:SP!!! ], SS ;将当前SS(栈的基地址)寄存器值存放至当前任务控制块的2,3内存单元 ], SP ;将当前SP(栈顶的偏移量)存放至当前任务控制块的0,1内存单元 首先讲讲LES指针的功能:LES的功能有点像C语言的*.     LES REG,MEM          参与操作的寄存器不仅有REG,还有ES寄存器.在16位系统中,寄存器为16位,很显然,MEM所指向的…
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS.IP寄存器没有出栈和入栈指令,所以只能引发一次中断,自动将CS.IP寄存器压入堆栈,再利用中断返回,将新任务的任务断点指针弹出到CPU的CS.IP寄存器中,实现任务切换.虽然明白个大概,但是其中的细节却有点模糊,为什么调用IRET中断返回指令后,弹入CPU的CS.IP寄存器的断点指针是新任务的断点指针,而不是当前任务的,UCOS II是如…
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   驱动设计    摘要:本文根据实际需要,在实现无线数据传输系统基本功能的前提下,选用功耗较低的CC1120芯片作为无线收发单元.在分析CC1120功能特性并介绍嵌入式操作系统μC/OS—III的基础上,阐述如何实现基于STM32F103ZE平台的CC1120驱动程序. 关键词:CC1120:嵌入式…