Keil uCos 2.52 stm32 【worldsing笔记】
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笔记】的更多相关文章
- STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf
STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...
- STM32学习笔记——OLED屏
STM32学习笔记--OLED屏 OLED屏的特点: 1. 模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2. 显示尺寸为0.96寸 3. 分辨率为128*64 4. ...
- STM32学习笔记——点亮LED
STM32学习笔记——点亮LED 本人学习STM32是直接通过操作stm32的寄存器,使用的开发板是野火ISO-V2版本: 先简单的介绍一下stm32的GPIO: stm32的GPIO有多种模式: 1 ...
- stm32学习笔记----双串口同时打开时的printf()问题
stm32学习笔记----双串口同时打开时的printf()问题 最近因为要使用串口2外接PN532芯片实现通信,另一方面,要使用串口1来将一些提示信息输出到上位机,于是重定义了printf(),使其 ...
- stm32学习笔记——外部中断的使用
stm32学习笔记——外部中断的使用 基本概念 stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个.比如说,PA0,PB0 ...
- STM32学习笔记(四)——串口控制LED(中断方式)
目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...
- stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用库函数使用GPIO引脚功能. 补充 本文章为多年前学习 ...
- stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入. STM ...
- STM32学习笔记-NVIC中断知识点
STM32学习笔记-NVIC中断知识点总结 中断优先级设置步骤 1. 系统运行后先设置中断优先级分组 函数:void NVIC_PriorityGroupConfig(uint32_tNVIC_Pri ...
随机推荐
- findBugs学习小结
原文地址:http://www.cnblogs.com/doit8791/archive/2012/10/22/2734730.html 今天代码质量再次强调java代码提交SVN前要经过findBu ...
- php用于URL的base64
function base64url_encode($plainText) { $base64 = base64_encode($plainText); $base64url = strtr($bas ...
- POJ 1879 Tempus et mobilius Time and motion 队列和栈
很简单的队列和栈的应用,不过读明白题意非常重要:(直接引用白书的题解)三个轨道,一个库.分别是分钟单位的轨道,5min单位的轨道,一小时单位的轨道,还有就是n容量的库.每过一分钟,一个小球从库里面出来 ...
- IT项目量化管理:细化、量化与图形化 与 中国IT项目实施困惑
IT项目开发和实施的组织先后在组织中引入项目管理模型的管理制度.流程和方法,但收入甚微.大量的IT项目依然面临着无休止的需求蔓延与频繁加班.项目工期失控.质量低下等典型的项目失控现象.对项目引入量化意 ...
- 函数buf_LRU_free_from_common_LRU_list
/******************************************************************//** Try to free a clean page fro ...
- 【 D3.js 高级系列 — 5.1 】 颜色插值和线性渐变
颜色插值指的是给出两个 RGB 颜色值,两个颜色之间的值通过插值函数计算得到.线性渐变是添加到 SVG 图形上的过滤器,只需给出两端的颜色值即可. 1. 颜色插值 在[高级 - 第 5.0 章]里已经 ...
- android应用分析之apk文件结构
实际上,一个APK文件就是一个.zip格式的压缩包,我们可以用解压缩工具打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码.一个典型的ap ...
- 临时禁用Resharper
Visual Studio 菜单 –> 工具 –> 选项 –> ReSharper –> Suspend按钮
- 使用struts的同步令牌避免form的重复提交
struts1避免重复提交 一.使用方法 1. 假如你要提交的页面为toSubmit.jsp: 2. 在打开toSubmit.jsp的Action1中加入:saveToken(request),例 ...
- svn版本控制-windows篇
一.准备工作 1.获取 Subversion 服务器程序(服务端) 到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序.目前最新的是1.5版本,具体下载地 ...