找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1202|回复: 0
打印 上一主题 下一主题
收起左侧

STM32下的UCOSII移植程序

[复制链接]
跳转到指定楼层
楼主
ID:493026 发表于 2020-6-26 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32下的UCOSII移植,亲测有效!
程序:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "includes.h"

//START 任务
//设置任务优先级
#define START_TASK_PRIO            10  ///开始任务的优先级为最低
//设置任务堆栈大小
#define START_STK_SIZE            128
//任务任务堆栈
OS_STK START_TASK_STK[START_STK_SIZE];
//任务函数
void start_task(void *pdata);

//LED0任务
//设置任务优先级
#define LED0_TASK_PRIO            7
//设置任务堆栈大小
#define LED0_STK_SIZE            128
//任务堆栈
OS_STK LED0_TASK_STK[LED0_STK_SIZE];
//任务函数
void led0_task(void *pdata);

//LED1任务
//设置任务优先级
#define LED1_TASK_PRIO            6
//设置任务堆栈大小
#define LED1_STK_SIZE            128
//任务堆栈
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
//任务函数
void led1_task(void *pdata);

//浮点测试任务
#define FLOAT_TASK_PRIO            5
//设置任务堆栈大小
#define FLOAT_STK_SIZE            128
//任务堆栈
//如果任务中使用printf来打印浮点数据的话一点要8字节对齐
__align(8) OS_STK FLOAT_TASK_STK[FLOAT_STK_SIZE];
//任务函数
void float_task(void *pdata);

int main(void)
{
    delay_init(168);       //延时初始化
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断分组配置
    uart_init(115200);    //串口波特率设置
    LED_Init();  //LED初始化
   
    OSInit();  //UCOS初始化
    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();  //开启统计任务
   
    OS_ENTER_CRITICAL();  //进入临界区(关闭中断)
    OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);//创建LED0任务
    OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);//创建LED1任务
    OSTaskCreate(float_task,(void*)0,(OS_STK*)&FLOAT_TASK_STK[FLOAT_STK_SIZE-1],FLOAT_TASK_PRIO);//创建浮点测试任务
    OSTaskSuspend(START_TASK_PRIO);//挂起开始任务
    OS_EXIT_CRITICAL();  //退出临界区(开中断)
}


//LED0任务
void led0_task(void *pdata)
{
    while(1)
    {
        LED0=0;
        delay_ms(80);
        LED0=1;
        delay_ms(100);
    }
}

//LED1任务
void led1_task(void *pdata)
{
    while(1)
    {
        LED1=0;
        delay_ms(300);
        LED1=1;
        delay_ms(300);
    }
}

//浮点测试任务
void float_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
    static float float_num=0.01;
    while(1)
    {
        float_num+=0.01f;
        OS_ENTER_CRITICAL();    //进入临界区(关闭中断)
        printf("float_num的值为: %f\r\n",float_num); //串口打印结果
        OS_EXIT_CRITICAL();        //退出临界区(开中断)
        delay_ms(500);
    }
}



STM32下的UCOSII移植.7z

366.19 KB, 下载次数: 18, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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