【Ucosii】关于OSSemPend出现的问题

  今天学习Ucosii学到了信号量操作这一章,在仿照任哲老师书上例题上写一个程序时发现任务没有按照预想中运行。找了半天原因发现是创建任务函数OSSemCreate()放在了函数OSInit()之前。可能因为某些系统函数没有初始化导致出现错误。以后尽量把系统函数放在OSInit()之后。

int main(void)
{

	OS_Heart_Init();  //初始化ucos心跳
	MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2);  //初始化中断优先级
	USART1_Init(9600);
	LED_Init();  //初始化LED硬件接口
	printf("\r\n system init OK! enter os...\r\n");
//*******************************************************************
//	OSSemCreate
//	OSSemPend
//	OSSemPost
//	OS_EVENT

//*******************************************************************
	OSInit();  //初始化ucos
	Fun_Semp = OSSemCreate(1);
	OSTaskCreate(start_task, (void *)0,
		(OS_STK *)&Start_Task_STK[Start_STK_Size-1],
		 Start_Task_PRIO);  //创建起始任务
	OSStart();  //ucos启动
}

  

时间: 2024-08-07 02:03:40

【Ucosii】关于OSSemPend出现的问题的相关文章

ucos-ii在ti dsp 28377芯片上的运行过程和移植过程

1.移植过程 在将ucos移植到28377d平台上时主要遇见了下面几个问题, 1) 文件怎么组织,是通过修改micrim上提供的28335一直代码修改而成的,下载地址为:https://www.micrium.com/. 2)移植完成后发现创建任务完成后,任务无法跳转,移植在主函数中来回循环 3)当使用ostimedly()函数对任务延时,当延时时间已经完成,系统无法跳出空任务循环,移植在IdleTask中运行 4)任务切换过程中总是跳入到异常中断中. 移植思路: 开始移植过程时,下载了micr

WIN7下使用VC2010调试uCOS-II 2.91

WIN7下使用VC2010调试uCOS-II 2.91 http://www.amobbs.com/thread-5462878-1-1.html ucos系统学习汇总 http://www.cnblogs.com/gmh915/category/212499.html WIN7下使用VC2010调试uCOS-II 2.91,码迷,mamicode.com

uCos-II内存管理

ucos 系统由于构思巧妙,结构精简设计,可读性强,同时又具有实时性操作系统大部分的优点,在 物联网开发中应用非常广泛. 之前一直都只是会用ucos 却没有好好研究过它,最近项目中要用到了 ucos-II 所以顺便研究了一番,突然发现 ucos-II 的内存管理写得非常巧妙. 废话不多说,直接上代码: 先看一个内存块结构体 1 typedef struct os_mem {                   /* MEMORY CONTROL BLOCK                   

STM32W108无线传感器网络嵌入式uCOS-II的移植及实时环境监測

基于STM32W108无线开发板,将ucos-ii v2.86内核移植到其上,并加入用户任务.实现对温湿度.超声波.声音.光敏等传感器的控制及实时数据採集. 14.1开发环境说明 硬件:STM32W108无线开发板,JLink烧写器.PC机.温湿度传感器.声音传感器.光敏传感器.超声波传感器等. 软件:IAR Embedded Workbench开发软件,SimpleMac Zigbee协议栈,ucos-ii的内核源代码. 实验硬件电路传感器接口与第13章中使用的传感器接口同样,具体信息參考13

详解μC/OS-II如何检测任务堆栈实际使用情况——即如何设置ucosii任务堆栈大小

不少屌丝同学都有类似经历吧,在使用ucosii创建任务时,关于任务堆栈大小设为多大合适搞的不清不楚,郁闷之下就随便整个数,比如就1024吧,呵呵,反正也没见得出问题,那就不多想了. 我想大多数同学都是这样做的吧.这样只是因为在一般情况下,1024确实已经足够大了,堆栈溢出的可能性很小而已.那么,如果你任务实际使用率只有很小的百分之几,一旦被你知道了,你会痛心不?我想你不痛心,μC/OS-II也会痛心的,它会觉得这个coder真是浪费啊,哈哈!顺便提醒下大家,堆和栈是完全不同的两个概念,出于国内习

ucosii 移植STM32笔记

今天接触了ucosii在STM32上面的移植,就碰到的几个问题进行总结: 1.工程输出文件出现错误,原因是没有添加相应设备芯片的启动文件: 2.出现undefined symbol ...  refered from ...,原因是OS_CPU_A.ASM这个文件没有添加: 3.启动函数(如下),主要用于系统启动之后进行调用的,也叫启动任务: static void startup_task(void *p_arg) { systick_init(); /* Initialize the Sys

uCOS-ii笔记

ucos ii system 文件结构 上层: 应用软件,用户代码 中层: 与处理器无关代码 与应用程序相关配置文件 与处理器有关代码 下层: 硬件(cpu,interupt,timer,gpio,iis-) 内核结构 ucos的内核机构可以从以下的代码可以看出,应用支持10个事件控制块,5个事件标志组,5个内存区块,4个队列控制块和20个任务,最低优先级为63,任务堆栈大小都为128等等,这些都是可以在OS_CFG.H中自行定义的. 临界段 处理器处理临界代码都必须先关中断,再处理临界代码,然

uCOS-II的学习笔记(共九期)和例子(共六个)

源:uCOS-II的学习笔记(共九期)和例子(共六个) 第一篇 :学习UCOS前的准备工作http://blog.sina.com.cn/s/blog_98ee3a930100w0eu.html 第二篇 uCOS-II的移植步骤http://blog.sina.com.cn/s/blog_98ee3a930100w2uh.html 第三篇:uCOS-II 任务的创建,挂起,恢复,删除http://blog.sina.com.cn/s/blog_98ee3a930100w8zm.html第四篇:u

关于ucosII系统的软件系统裁剪性

ucosII是依靠编译时的条件编译来实现软件系统的裁剪性的,即把用户可裁剪的代码段写在#if和#endif预编译指令之间,在编译时根据#if预编译指令后面的常数的值来确定是否该代码段进行编译.在工程文件下,有OS_CFG.H的文件,里面的内容就是针对于所有常数的配置,这些配置都有默认值,用户可根据需要对这些预设值进行修改.