按键任务检测是否有键按下,有键按下即发送消息邮箱。响应任务检测消息邮箱,有消息则在串口打印输出。
按键任务检测是否有键按下,有键按下即发送消息邮箱。响应任务检测消息邮箱,有消息则控制步进电机的正转,反转,停止、加速和减速。
两个按键任务一个响应任务。有键按下即发送消息邮箱。任一消息均控制响应任务运行。两个按键任务中任意一个按键按下,则发送一个消息邮箱给响应任务。若按下是数字(0-9),则在串口打印输出,并在数码管显示;如为非数字(其他),则分别对应 LED 灯的闪烁、步进电机的正转,反转,停止、加速和减速。
#include "Includes.h" /* uC/OS interface */
#include "option.h"
#include "2410lib.h"
#include "uhal.h"
/* 任务栈 */
OS_STK StackLED[STACKSIZE]= {0, }; // 任务LED任务栈
OS_STK StackSEG[STACKSIZE]= {0, }; // 任务SEG任务栈
OS_STK StackSEG1[STACKSIZE]= {0, }; // 任务SEG任务栈
/* 任务ID */
char IdLED = '1'; // 任务LED ID
char IdSEG = '2'; // 任务SEG ID
char IdSEG1 = '3'; // 任务SEG ID
/* 任务处理函数 */
void TaskLED(void *Id); // 任务LED任务处理函数
void TaskSEG(void *Id); // 任务SEG任务处理函数
void TaskSEG1(void *Id); // 任务SEG任务处理函数
/* 邮箱 */
OS_EVENT *Mbox1;
INT8U ch;
INT8U i;
/*
* 跑马灯闪烁函数,调用一次,四个跑马灯由亮变灭或者由灭变亮
*/
void User_LED_Blink( void)
{
static int led_status = 0;
led_status += 1;
if(led_status % 2 == 0)
Led_Display(0x03);
else
Led_Display(0x00);
}
void User_LED_Blink1(void)
{
static int led_status = 0;
led_status +=