|
最近在做stm32单片机的时候,想让单片机跑一种轻量级操作系统于是找到CoOS,内核只有974个字节,分享给大家。但是教程是英文哦,英语不好的建议用金山词霸的画译功能辅助阅读。带上一个LED使用例子。
单片机源程序如下:
- #include <CoOS.h>
- #include "stm32f10x.h"
- OS_STK taskA_stk[128]; //建立一个任务栈A
- OS_STK taskB_stk[128]; //建立一个任务栈B
- void LED_GPIO_Init(void)
- {
-
- GPIO_InitTypeDef Weiqi_GPIO_InitStru;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,ENABLE);
-
- Weiqi_GPIO_InitStru.GPIO_Pin = GPIO_Pin_5;
- Weiqi_GPIO_InitStru.GPIO_Speed = GPIO_Speed_50MHz;
- Weiqi_GPIO_InitStru.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_Init(GPIOB,&Weiqi_GPIO_InitStru);
-
- Weiqi_GPIO_InitStru.GPIO_Pin = GPIO_Pin_5;
- Weiqi_GPIO_InitStru.GPIO_Speed = GPIO_Speed_50MHz;
- Weiqi_GPIO_InitStru.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_Init(GPIOE,&Weiqi_GPIO_InitStru);
-
- GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- GPIO_ResetBits(GPIOE,GPIO_Pin_5);
-
- }
- void TaskA(void* pdata)
- {
- for(;;)
- {
- GPIO_SetBits(GPIOB,GPIO_Pin_5);
- CoTickDelay(10); //延时N个系统节拍 任务进入等待态(TASK_WAITING) 延时是10*100ms 等于1S 就是一秒钟一次?
- GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- CoTickDelay(10); //延时N个系统节拍 任务进入等待态(TASK_WAITING) 延时是10*100ms 等于1S 就是一秒钟一次?
- }
- }
- void TaskB(void* pdata)
- {
- for(;;)
- {
- GPIO_SetBits(GPIOE,GPIO_Pin_5);
- CoTickDelay(5); //延时N个系统节拍 任务进入等待态(TASK_WAITING) 延时是5*100ms 等于500 m?
- GPIO_ResetBits(GPIOE,GPIO_Pin_5);
- CoTickDelay(5); //延时N个系统节拍 任务进入等待态(TASK_WAITING) 延时是5*100ms 等于500 m?
- }
- }
- int main(void)
- {
- CoInitOS (); //操作系统初始化
-
- LED_GPIO_Init();
-
- /*
- [IN1]创建任务的函数体
- [IN2]任务函数体的传入参数列表
- [IN3]任务优先级
- [IN4]任务栈起始地址
- [IN5]任务堆大小
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
源码:
Coos-LED.zip
(345.94 KB, 下载次数: 156)
|
|