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 ...
随机推荐
- 智传播客hadoop视频学习笔记(共2天)
第一天:1.答疑解惑• 就业前景• 学习hadoop要有什么基础• hadoop会像塞班一样,热一阵子吗• hadoop学习起来容易还是困难• 课堂上的学习方法(所有实验必须按照要求做,重原 ...
- 理解TCP/IP协议
TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...
- C中如何调用C++函数、类内函数 \混编\链接
在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...
- Android安装常见问题
在初次运行Android程序的时候会出现类似的错误,导致程序无法继续运行,如下面的几个例子: 问题1:PC安卓模拟器 PANIC: Could not open: C:\Documents and S ...
- poj3686The Windy's (KM)
http://poj.org/problem?id=3686 拆点很巧妙 将每个M个点拆成m*n个点 分别表示第i个玩具在第j个机器上倒数第K个处理 假设这k个玩具真正用在加工的时间分为a1,a2,a ...
- 推荐:ThoughtWorks(中国)程序员读书雷达
部分转自张逸的博客:http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/ 长久以来一直对程序员 ...
- I.MX6 android 移除shutdown功能
/************************************************************************ * I.MX6 android 移除shutdown ...
- ajax取json数据——简单的
json数据:json4.json <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 使用SignalR 提高B2C商城用户体验1
vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...
- 使用Busybox-1.2.0制作根文件系统
使用Busybox-1.2.0制作根文件系统 cross-3.3.2 make-3.8.1 STEP 1: 创建根文件系统目录,主要包括以下目录/bin,/etc,/dev,/mnt,/sbin,/u ...