找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3416|回复: 2
收起左侧

UCOSII的STM32实验例程

[复制链接]
ID:377939 发表于 2018-7-23 15:21 | 显示全部楼层 |阅读模式
包括UCOSII实验例程!
0.png

单片机源程序如下:
  1. #include "public.h"

  2. #define START_TASK_PRIO 10     //开始任务优先级
  3. #define START_STK_SIZE 64     //设置任务堆栈大小
  4. OS_STK         START_TASK_STK[START_STK_SIZE];          //创建任务堆栈空间

  5. #define LED1_TASK_PRIO 1     //led1任务优先级
  6. #define LED1_STK_SIZE 64     //设置任务堆栈大小
  7. OS_STK         LED1_TASK_STK[LED1_STK_SIZE];          //创建任务堆栈空间

  8. #define BUTTON_TASK_PRIO 3     //BUTTON任务优先级
  9. #define BUTTON_STK_SIZE 64     //设置任务堆栈大小
  10. OS_STK         BUTTON_TASK_STK[BUTTON_STK_SIZE];          //创建任务堆栈空间


  11. #define BEEP_TASK_PRIO 5     //BEEP任务优先级
  12. #define BEEP_STK_SIZE 64     //设置任务堆栈大小
  13. OS_STK         BEEP_TASK_STK[BEEP_STK_SIZE];          //创建任务堆栈空间

  14. void start_task(void *pdata);
  15. void button_task(void *pdata);         //任务2 按键

  16. void RCC_Init()
  17. {
  18.         SystemInit();
  19. }
  20. int main()
  21. {
  22.         delay_init();         //延时初始化
  23.         RCC_Init();  //系统时钟初始化
  24.         LED_Init();          //端口初始化
  25.         BEEP_Init();          //端口初始化
  26.         key_init();
  27.         OSInit();  //初始化UCOS操作系统
  28.         
  29.         OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1]
  30.         ,START_TASK_PRIO);  //创建起始任务
  31.         OSStart();   //启动ucos操作系统                        
  32. }
  33. void start_task(void *pdata)    //开始任务
  34. {
  35.         OS_CPU_SR cpu_sr=0;
  36.         pdata=pdata;
  37.         OSStatInit();  //初始化统计任务
  38.         OS_ENTER_CRITICAL();  //进入临界区,中断无法打断

  39.         OSTaskCreate(led1_task,(void *)0,(OS_STK *)&LED1_TASK_STK[LED1_STK_SIZE-1]
  40.         ,LED1_TASK_PRIO);

  41.         OSTaskCreate(beep_task,(void *)0,(OS_STK *)&BEEP_TASK_STK[BEEP_STK_SIZE-1]
  42.         ,BEEP_TASK_PRIO);

  43.         OSTaskCreate(button_task,(void *)0,(OS_STK *)&BUTTON_TASK_STK[BUTTON_STK_SIZE-1]
  44.         ,BUTTON_TASK_PRIO);

  45.         OSTaskSuspend(START_TASK_PRIO);   //挂起起始任务
  46.         OS_EXIT_CRITICAL();  //退出临界区,中断可以打断
  47. }
  48. void button_task(void *pdata)         //任务2 按键
  49. {
  50.         pdata=pdata;
  51.         while(1)
  52.         {
  53.                 if(k_up==1)           //挂起
  54.                 {
  55.                         delay_ms(10);
  56.                         if(k_up==1)
  57.                         {
  58.                                 OSTaskSuspend(LED1_TASK_PRIO);   //挂起LED1任务                        
  59.                         }
  60.                         while(k_up);
  61.                 }
  62.                
  63.                 if(k_down==0)           //恢复
  64.                 {
  65.                         delay_ms(10);
  66.                         if(k_down==0)
  67.                         {
  68.                                 OSTaskResume(LED1_TASK_PRIO);   //恢复LED1任务                        
  69.                         }
  70.                         while(!k_down);
  71.                 }

  72.                 if(k_left==0)           //删除
  73.                 {
  74.                         delay_ms(10);
  75.                         if(k_left==0)
  76.                         {
  77.                                 OSTaskDelReq(BEEP_TASK_PRIO);   //发送删除蜂鸣器任务请求                        
  78.                         }
  79.                         while(!k_left);
  80.                 }

  81.                 if(k_right==0)           //创建任务
  82.                 {
  83.                         delay_ms(10);
  84.                         if(k_right==0)
  85.                         {
  86.                                 OSTaskCreate(beep_task,(void *)0,(OS_STK *)&BEEP_TASK_STK[BEEP_STK_SIZE-1]
  87.                                 ,BEEP_TASK_PRIO);                                
  88.                         }
  89.                         while(!k_right);
  90.                 }
  91.                 delay_ms(10);
  92.         }        
  93. }

复制代码

所有资料51hei提供下载:
元件库和封装库.zip (76.6 KB, 下载次数: 22)
回复

使用道具 举报

ID:561907 发表于 2020-4-4 09:42 | 显示全部楼层
下了学习了,谢谢。
回复

使用道具 举报

ID:259648 发表于 2020-4-6 01:29 | 显示全部楼层
前来学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表