新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2015-5-21
- 在线时间
- 6 小时
|
20金钱
如题单独使用使用正点原子的ucos 例程 实验56 UCOSII实验1-1-任务调度 ,和实验34 FLASH模拟EEPROM实验。都没有问题,但是如果在实验56上移植实验34的flash读写文件。机会出现问题。想象,只有在创建任务之前写flash才正常,如果创建任务以后 flash写失败。#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "stmflash.h"
#include "includes.h"
//ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé56
//UCOSIIêμÑé1-èÎÎñμ÷¶è -¿aoˉêy°æ±¾
//¼¼êõÖ§3Ö£owww.openedv.com
//ìÔ±|μêÆì£ohttp://eboard.taobao.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
//×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
/////////////////////////UCOSIIèÎÎñéèÖÃ///////////////////////////////////
//START èÎÎñ
//éèÖÃèÎÎñóÅÏ輶
#define START_TASK_PRIO 10 //¿aê¼èÎÎñμÄóÅÏ輶éèÖÃÎa×îμí
//éèÖÃèÎÎñ¶ÑÕ»′óD¡
#define START_STK_SIZE 64
//èÎÎñ¶ÑÕ»
OS_STK START_TASK_STK[START_STK_SIZE];
//èÎÎñoˉêy
void start_task(void *pdata);
//LED0èÎÎñ
//éèÖÃèÎÎñóÅÏ輶
#define LED0_TASK_PRIO 7
//éèÖÃèÎÎñ¶ÑÕ»′óD¡
#define LED0_STK_SIZE 64
//èÎÎñ¶ÑÕ»
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//èÎÎñoˉêy
void led0_task(void *pdata);
//LED1èÎÎñ
//éèÖÃèÎÎñóÅÏ輶
#define LED1_TASK_PRIO 6
//éèÖÃèÎÎñ¶ÑÕ»′óD¡
#define LED1_STK_SIZE 64
//èÎÎñ¶ÑÕ»
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//èÎÎñoˉêy
void led1_task(void *pdata);
u32 te = 87432;
u8 id= 1;
int main(void)
{
delay_init(168); //3õê¼»ˉÑóê±oˉêy
LED_Init(); //3õê¼»ˉLED¶Ë¿ú
STMFLASH_Write(Temp_adress,&te,1);//正确
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//′′½¨Æeê¼èÎÎñ
OSStart();
}
//¿aê¼èÎÎñ
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OS_ENTER_CRITICAL(); //½øèëáù½çÇø(ÎT·¨±»ÖD¶Ï′ò¶Ï)
OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);
OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //1òÆeÆeê¼èÎÎñ.
OS_EXIT_CRITICAL(); //íË3öáù½çÇø(¿éòÔ±»ÖD¶Ï′ò¶Ï)
}
//LED0èÎÎñ
void led0_task(void *pdata)
{
while(1)
{
LED0=0;
delay_ms(80);
if(id == 1)
{
STMFLASH_Write(Temp_adress,&te,1);//失败
id = 0;
}
LED0=1;
delay_ms(920);
};
}
|
|