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 ...
随机推荐
- SaaS系列介绍之一: SaaS的前身ASP介绍
1. 引言 未来将越来越不可预测,这是新经济最具挑战性的方面之一.商务和技术上的瞬息万变会产生变化,这既可以看作要防范的威胁,也可以看作应该欢迎的机遇. ...
- spring结合时,web.xml的配置
<!-- 1. web.xml配置 <context-param> <param-name>webAppRootKey</param-name> <pa ...
- 在自己的网站上实现QQ授权登录
最近在实现QQ授权登录,现将我的实现过程以及我的理解整理如下.以下所述如有不对之处,请指正. 官方提供的SDK有:JS,PHP,Java.我的网站使用Scala+Play搭建的,所以只能用JS SDk ...
- 15个必知的Android开发者选项
Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理出15个 ...
- &&运算符和||运算符的优先级问题
package priority; public class TestAndOrPriority { /* * &&的优先级高就不代表 他会先运行 ||的右边 而是说会把右边用& ...
- Java更新XML的四种常用方法简介
本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分析这四种方法的优劣.其次,本文还对如何控制Java程序输出的XML文档的格式做了展开论述. JAXP是Java API for X ...
- wsse:InvalidSecurity Error When Testing FND_PROFILE Web Service in Oracle Applications R 12.1.2 from SOAP UI (Doc ID 1314946.1)
wsse:InvalidSecurity Error When Testing FND_PROFILE Web Service in Oracle Applications R 12.1.2 from ...
- Innodb 锁系列2 事务锁
上一篇介绍了Innodb的同步机制锁:Innodb锁系列1 这一篇介绍一下Innodb的事务锁,只所以称为事务锁,是因为Innodb为实现事务的ACID特性,而添加的表锁或者行级锁. 这一部分分两篇来 ...
- 通用权限管理系统Ver2.0
通用权限管理系统Ver2.0平台采用kendo+mvc4+Nhibernate技术实现,底层采用自定义ORM实现数据库底层代码,支持Oracle.SqlServer.mysql等常用数据库,界面采用k ...
- 20款最优秀的JavaScript编辑器
毫无疑问SublimeText,Notepad++,webstorm等,是市面上最主导的编辑器,但当然也有一些更多的JavaScript编辑器提供众多的特性和功能,方便和轻松自由的编码.本文整理了20 ...