我要实现往邮箱里面存数据 再取数据 然后通过串口发上电脑
不过在电脑上显示的都是 ........... 不管我改变存放邮箱的数据 在电脑上都是显示 点 .....
程序就2个任务,弄了一天没弄出来,求助攻- -
u=7 不管换什么数据 结果都是一样 邮箱操作不了
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "includes.h"
//ALIENTEK战舰STM32开发板实验53
//UCOSII实验1-任务调度
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司
/////////////////////////UCOSII任务堆栈设置///////////////////////////////////
//START 任务
//设置任务优先级
#define START_TASK_PRIO 10 //开始任务的优先级设置为最低
//设置任务堆栈大小
#define START_STK_SIZE 64
//创建任务堆栈空间
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数接口
void start_task(void *pdata);
//uart任务
//设置任务优先级
#define UART_TASK_PRIO 6
//设置任务堆栈大小
#define UART_STK_SIZE 64
//创建任务堆栈空间
OS_STK UART_TASK_STK[UART_STK_SIZE];
//任务函数接口
void uart_task(void *pdata);
OS_EVENT *box;
int u=7;
int main(void)
{
delay_init(); //延时初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);
box=OSMboxCreate((void *)0); //建邮箱
OSMboxPost(box,&u); //往邮箱存数据
OSInit();
OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
OSStart();
}
//开始任务
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)
OSTaskCreate(uart_task,(void *)0,(OS_STK*)&UART_TASK_STK[UART_STK_SIZE-1],UART_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}
void uart_task(void *pdata)
{
int *a;
u8 err;
while(1)
{
a=OSMboxPend(box,10,&err); // 在邮箱取数据
USART_SendData(USART1,(*a)+0x30);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=1);
delay_ms(1000);
}
}
|