1、uCOSii V2.52
   a、加了7个可以配置的钩子函数宏
    #define OS_TASK_CREATE_HOOK_EN    0    /* 任务创建时调用钩子函数      使能 1 / 禁止 0                    */
    #define OS_TASK_STAT_HOOK_EN      0    /* 统计任务运行时调用钩子函数  使能 1 / 禁止 0                    */
    #define OS_TASK_SW_HOOK_EN        1    /* 任务调度时调用钩子函数      使能 1 / 禁止 0                    */
    #define OS_TIME_TICK_HOOK_EN      1    /* 滴答中断时调用钩子函数      使能 1 / 禁止 0                    */
    #define OS_TCB_INIT_HOOK_EN       0    /* TCB初始化时调用钩子函数     使能 1 / 禁止 0                    */
    #define OS_TASK_IDLE_HOOK_EN      0    /* 统计任务运行时调用钩子函数  使能 1 / 禁止 0                    */
    #define OS_INIT_BEGIN_HOOK_EN     0    /* OS初始化开始时调用钩子函数  使能 1 / 禁止 0                    */
    #define OS_INIT_END_HOOK_EN       0    /* OS初始化结束时调用钩子函数  使能 1 / 禁止 0                    */
    b、加了创建任务是自动分配栈接口OSSetupTask和宏,也可以用原生的OSTaskCreate(),OSSetupTask(任务名, 优先级);
    #define  OS_TASK_AUTO_STK_SIZE   128  /* 默认用户任务栈大小 单位类型:OS_STK                             */
    #define  OS_MAX_TASK_AUTO_STK      2  /* 使用默认栈的任务数,0 不使用,必须小于等于 OS_MAX_TASKS          */
                                          /* 使用默认分配栈,每个栈大小都是OS_TASK_STK_SIZE                  */
    OS_MAX_TASK_AUTO_STK 定义为0要自行定按照uCos标准接口写应用代码;
    c、应用程序无需定义main(),无需对SysTick初始化(在OS_CPU_C.c中完成),定义MainTask即可
    void  MainTask (void *pArg)
    {
        //这里放入板子硬件初始化代码
        //创建其他任务
        OSSetupTask(Task0, 2);
        while(1)
        {
            OSTimeDly(100);
            pArg = pArg;
        }
    }
    d、系统默认开启任务调度时调用钩子函数和滴答中断时调用钩子函数
    当LED在任务正常调度时以10:90 个Tick闪烁
    当LED在任务非正常调度时以1:1 个Tick闪烁
    #define LED_GPIO        GPIOE                               /*LED IO口                                 */
    #define LED_GPIO_PIN    GPIO_Pin_12                         /*LED IO口引脚号                            */
    #define LED_GPIO_CLK    RCC_APB2Periph_GPIOE                               /*LED IO时钟名                   */
    #define LED_ON()        LED_GPIO->ODR &= ~LED_GPIO_PIN      /*LED开 低电平                              */
    #define LED_OFF()       LED_GPIO->ODR |=  LED_GPIO_PIN      /*LED开 高电平                              */
    #define LED_REV()       RevBit(LED_GPIO->ODR, 12)           /*LED 状态反转                              */
2、stm32 Lib V3.5
    a.startup_stm32f10x_md.s 把默认的软件中断和定时器中断名改为: OS_CPU_PendSVHandler  和  OS_CPU_SysTickHandler
    b、stm32f10x.h库检测关闭,定义为:#define assert_param(a)

3、在工程设置选项卡C/C++ 定义cpu类型 STM32F10X_MD

4、测试环境Keil MDK 4.7a  stm32f103vb

 

 

应用Demo:

#include "includes.h"
void Task0 (void *pArg);

/*   主任务
*/
void  MainTask (void *pArg)
{
     OSSetupTask(Task0, 2);
    while(1)
    {
         OSTimeDly(100);
        pArg = pArg;
    }
}

/*   其他任务
*/
void Task0 (void *pArg)
{
    int cnt;
  cnt = 0;
    while(1)
    {
        OSTimeDly(10);
        pArg = pArg;
        cnt++;
        if(cnt == 100)
            while(1);
    }
}

 

源码下载:点击下载

Keil uCos 2.52 stm32 【worldsing笔记】的更多相关文章

  1. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  2. STM32学习笔记——OLED屏

    STM32学习笔记--OLED屏 OLED屏的特点: 1.  模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2.  显示尺寸为0.96寸 3.  分辨率为128*64 4.   ...

  3. STM32学习笔记——点亮LED

    STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...

  4. stm32学习笔记----双串口同时打开时的printf()问题

    stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...

  5. stm32学习笔记——外部中断的使用

    stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...

  6. STM32学习笔记(四)——串口控制LED(中断方式)

    目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...

  7. stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习 ...

  8. stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入.   STM ...

  9. STM32学习笔记-NVIC中断知识点

    STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...

随机推荐

  1. codeforces #310 div1 B

    我们考虑n-1座桥每座桥需要的长度在一个区间[L,R]中 之后我们现在有m座桥,每个桥的长度为k 题意就是要求一个匹配方案 显然如果数据范围不大直接KM就可以了 可是20w的数据KM显然要T 所以我们 ...

  2. 跨平台的目录遍历实现方法(windows和linux已经测试)

    dirent.h是gcc下的一个头文件,在windows中是没有的.这个文件中封装了几个对目录进行操作函数: static DIR *opendir (const char *dirname);sta ...

  3. Kali2.0 Sqlmap清除历史扫描日志

    使用Sqlmap扫描SQL注入漏洞时,首次扫描会在SQL的/root/.sqlmap/output/目录下留下 以IP地址为名称的文件夹,如下所示: 而如果该安全漏洞经过修复后,再次使用SQLMAP扫 ...

  4. Extension Method[上篇]

    在C#3.0中,引入了一些列新的特性,比如: Implicitly typed local variable, Extension method,Lambda expression, Object i ...

  5. 中南大学oj 1317 Find the max Link 边权可以为负的树上最长路 树形dp 不能两遍dfs

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1317经典问题:树上最长路,边权可以为负值的,树形dp,不能用两边dfs.反例:5 41 2 22 ...

  6. poj2182

    首先容易知道,最后一个数是最容易确定的,于是从后往前确定 对于位置j,它的数就是1~n中剩余数的第a[j]+1小的数 这当然可以用平衡数做,复杂度为O(nlogn) 有没有更简洁得算法?树状数组+二分 ...

  7. POJ 3281 Dining (网络流构图)

    [题意]有F种食物和D种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料.现在有N头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和 ...

  8. Java [leetcode 21]Merge Two Sorted Lists

    题目描述: Merge two sorted linked lists and return it as a new list. The new list should be made by spli ...

  9. 多线程程序设计学习(9)worker pattern模式

    Worker pattern[工作模式]一:Worker pattern的参与者--->Client(委托人线程)--->Channel(通道,里边有,存放请求的队列)--->Req ...

  10. (二)学习C#之内存管理

    一.当你运行你的程序通常都会访问哪些内存空间呢? 电脑自言自语道,“这个人要声明一个整数”或“这个人个方法”或“这个人要创建一个对象” 1.这些信息究竟是存在内存里的什么地方呢? 2.或者说用于描述这 ...