小作品简介
这个小作品是uCOSII多任务系统的简单应用,使MCU(STM32F103)可以“同时”执行多个任务。并使用邮箱在多任务系统中通信。如果需要可以在文字末尾下载到完整的工程,其中System文件夹中3个文件由原子提供,提供了一些函数,便于编程和debug,具体可参看原子官方的教程。
(本作品由于没有电机驱动,所以用三个三极管将就,这是不规范操作,效果也一般)
本工程中创建了5个任务,并设置最多为12个任务。分别是:
1. led0_task:控制LED灯的亮灭
2. MQ2_task : 检测烟雾传感器的值
3. FC_task : 检测是否有火焰
4. Alter_task : 接受邮箱信息,决定是否分通过蜂鸣器报警,启动电风扇。
5. LIGHT_task : 控制一个三色LED
由于是该模块与其他模块有通讯,工程中添加了无线模块驱动和初始化程序。假设不需要无线模块,注释初始化代码即可。硬件模块是一些常用模块,可以在网络上查看其简介
- 元件清单
- MQ2烟雾传感器
- NRF24L01无线模块
- 火焰传感器(2个)
- 蜂鸣器
- 直流电机
- 三色LED灯
- L298N电机驱动模块
- STM32F103c8t6最小系统
- 硬件连线
- 电机信号线 -> PB0
- MQ2数字接口 -> GPIOA.1 (模数转化)
- 火焰传感器
- A:DO -> GPIOB.5
- B : DO -> GPIOB.6
- 无线模块:
- 1号引脚 -> GND
- 2号引脚 -> VCC
- 3号引脚 -> PA4
- 4号引脚 -> PB9
- 5号引脚 -> PA5
- 6号引脚 -> PA7
- 7号引脚 -> PA6
- 8号引脚 -> PA10
主要程序
#define START_TASK_PRIO 10
#define START_STK_SIZE 64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_