搜狐首页 科技 法医秦明

手机搜狐

SOHU.COM

STM32 UCOS所需最小空间参考

利用STM32UCOS写了个很简单的程序,编译如下

ProgramSize:Code=24562RO-data=746RW-data=88ZI-data=7456

以此推算,小于FLASH小于24KRAM小于8K根本不能考虑STM32的UCOS,只能祼奔,

STM32的FLASH到还好满足些,一般都有64K,主要是RAM,看来STM32F0XX STM32F100上估计是没多大希望的了

----------------------以下为main.c-----------------------

#define MAIN_C

#include "includes.h"

void first_task(void *pdata);

void task_2(void *pdata);

void task_3(void *pdata);

int main()

{

RCC_ClocksTypeDef OS_Clocks;

bsp_Ini(); //初始化各个驱动,放于bsp_ini.c中

OSInit(); //ucos的系统初始化

RCC_GetClocksFreq(OS_Clocks);

OS_CPU_SysTickInit( OS_Clocks.HCLK_Frequency / OS_TICKS_PER_SEC ); //设置时钟滴答,1ms

OSTaskCreate(first_task,0,stk1[99],task1_sn); //创建第一个任务

OSStart(); //任务开始

}

void first_task(void *pdata) //在第一个任务里面创建其他任务(官方的推荐)

{

INT8U err;

int AD_value;

pdata=pdata;

flag1=OSFlagCreate(0,err);

OSTaskCreate(task_2,0,stk2[99],task2_sn);

OSTaskCreate(task_3,0,stk3[99],task3_sn);

while(1)

{

AD_value=(int) ( (double) ADC_GetConversionValue(ADC1) *3/4096 * 100 ) ;

DEBUG_COM_STREAM("\r\nAD=%L",(u8*)AD_value);//USART_SendData(USART1, test);

精选