⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于STM32的RTOS例程
💻 C
字号:
/*
***************************************************************************************
*
*               (c) Copyright 2006-2008, hui lian. luo, china, zj. hz 
*                            All Rights Reserved
*
*							 深圳市英蓓特信息技术有限公司
*                            http://www.embedinfo.com
*                            博格达科技有限公司
*                            http://www.bogodtech.com                         
*
*--------------文件信息-----------------------------------------------------------------
* 文 件 名: main.c
* 创 建 人: 罗辉联(wyuyun@hotmail.com, lhlzjut@hotmail.com, armgcc@foxmail.com) 	
* 创建日期: 2007年11月10日
* 描    述: 主程序C语言入口, uC/OS-II启动
* 技术顾问: 楼东武(副教授)  浙江大学信电系
*
*---------- 版本信息-------------------------------------------------------------------
* 版    本: V1.0
*
*--------------------------------------------------------------------------------------
****************************************************************************************
*/


/* 
**************************************************************************************** 
* Includes
****************************************************************************************
*/ 
#include "config.h"

/* 
**************************************************************************************** 
* Private define:	TASK PRIORITIES 
****************************************************************************************
*/ 
#define OS_TASK_INIT_PRIO 			1 

/* 
**************************************************************************************** 
* Private define:	TASK STACK SIZES 
****************************************************************************************
*/ 
#define OS_INIT_TASK_STACK_SIZE		64			/* 初始化任务堆栈大小 	*/ 

/* 
**************************************************************************************** 
* Private variables
****************************************************************************************
*/ 
OS_STK	InitTaskStk[OS_INIT_TASK_STACK_SIZE];	/* 初始化任务堆栈 		*/

/* 
**************************************************************************************** 
* Private function prototypes
****************************************************************************************
*/ 
static void  application_init (void);

static void  init_task_core(void *pdata);


/***************************************************************************************
** 函数名称: main
** 功能描述: C入口函数
** 参    数: None
** 返 回 值: None       
** 作   者: 罗辉联
** 日   期: 2007年11月28日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
int main(void)
{
	#if (OS_TASK_NAME_SIZE >= 16) 
		INT8U err;
	#endif

  	Target_Init();			/* 目标基本初始化 */

  	OSInit();				/* 初始化OS 	  */

  	Tmr_TickInit();			/* 初始化OS Tick  */
  
  	OSTaskCreateExt(init_task_core, (void *)0, (OS_STK *)&InitTaskStk[OS_INIT_TASK_STACK_SIZE - 1],
					OS_TASK_INIT_PRIO,
					OS_TASK_INIT_PRIO,
					(OS_STK *)&InitTaskStk[0],
					OS_INIT_TASK_STACK_SIZE,
					(void *)0,
					OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);	
					
	#if (OS_TASK_NAME_SIZE >= 16)
		OSTaskNameSet(OS_TASK_IDLE_PRIO, (INT8U *)"Idle task", &err);
		OSTaskNameSet(OS_TASK_INIT_PRIO, (INT8U *)"Init task", &err);
	#endif

	OSStart();				/* 启动多任务环境 */
	 
  	return(0);
}

/***************************************************************************************
** 函数名称: init_task_core
** 功能描述: 初始化任务核心函数:(1) 初始化应用  (2) 初始化操作系统组件
** 参    数: *pdata
** 返 回 值: None       
** 作   者: 罗辉联
** 日   期: 2007年11月28日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
static void init_task_core(void *pdata)
{
		 
	pdata = pdata;				/* 防止编译器警告 				*/

	application_init();	
	 
	create_os_task(); 			/* 创建应用中的大多数任务 		*/

	create_task_status();		/* 设置初始化状态需要挂起的任务 */
	
	create_os_semphore();		/* 创建应用中的大多数信号量 	*/

	create_os_mutex();			/* 创建应用中的大多数互斥量 	*/

	create_os_mailbox();		/* 创建应用中的大多数邮箱消息 	*/

	create_os_queue();

	create_os_timer();

	mem_init();					/* 创建应用中的大多数内存分区 	*/
			
	Wdg_Init();					/* 窗口看门狗初始化 			*/	
		
	while(1)
	{
		printf("STM3201 SDK, multi task start running!\n");	

		OSTaskSuspend(OS_PRIO_SELF);	/* 挂起初始化任务 		*/
	}	
}

/***************************************************************************************
** 函数名称: application_init
** 功能描述: 基本应用初始化
** 参    数: None
** 返 回 值: None       
** 作   者: 罗辉联
** 日   期: 2007年11月28日
**--------------------------------------------------------------------------------------
** 修 改 人: 
** 日   期: 
**--------------------------------------------------------------------------------------
****************************************************************************************/
static void  application_init (void)
{
	UART_onfiguration();

	Buzzer_Configuration();

    LED_Configuration();

	kpd_init();

	SPI_Config();
  		
}


/***************************** http://www.bogodtech.com ***********************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -