Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
[第3期 空气质量分析仪]第1周作业--砍柴人三号
发布于 2019-10-18 20:43:48 浏览:917
订阅该版
* 本帖最后由 nsdcwj 于 2019-10-18 20:47 编辑 * 一、平台介绍 由于后续工作项目需要用到有线网络,选择了采用STM32F407Z6芯片的启明欣欣开发板。开发板包含RJZ45网口、DHT11温度传感器接口、3个LED指示灯、5向按键、6个串口、JTAG/SWD烧录接口等。 二、环境搭建 1、使用J-Link连接JTAG接口作为程序仿真和烧录。2、从RTT官方下载rt-thread包,所用开发板跟正点原子的stm32f407-atk-explorer硬件基本一样,所以选用stm32f407-atk-explorer的bsp来做修改。3、选用串口3-TLL作为与电脑通讯的console。在env中,menuconfig—RT-Thread Kernel – Kenel Dvice Object,选择(*)Using console for rt_kprintf,并修改(uart3)the device name for console。然后在Hardware Drivers Config – Onboard PeripheralDrivers中选中(*)EnableCOM3(uart3)4、Scons –target=mdk5生产keil工程。三、任务实现 1、LED报警任务实现 在application文件下新建led_alert.c和led_alert.h,并在keil工程中的Applictions目录下添加led_alert.c文件。代码如下: ```/* defined the LED0 pin: PE3 */ #define LED0_PIN GET_PIN(E, 3) #define LED1_PIN GET_PIN(E, 4) #define LED2_PIN GET_PIN(G, 9) void led_init(void) { rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); //设置LED0_PIN,输出模式 rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT); //设置LED1_PIN,输出模式 rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT); //设置LED2_PIN,输出模式 rt_pin_write(LED0_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_pin_write(LED1_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_pin_write(LED2_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_kprintf("LED init!
"); } void led0_on(void) { rt_pin_write(LED0_PIN, PIN_LOW); //LED共阳,低电平时亮灯 } void led1_on(void) { rt_pin_write(LED1_PIN, PIN_LOW); //LED共阳,低电平时亮灯 } void led2_on(void) { rt_pin_write(LED2_PIN, PIN_LOW); //LED共阳,低电平时亮灯 } void led0_off(void) { rt_pin_write(LED0_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 } void led1_off(void) { rt_pin_write(LED1_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 } void led2_off(void) { rt_pin_write(LED2_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 } void led0_blink(void) { rt_pin_write(LED0_PIN, PIN_LOW); //LED共阳,低电平时亮灯 rt_thread_mdelay(200); rt_pin_write(LED0_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_thread_mdelay(200); } void led1_blink(void) { rt_pin_write(LED1_PIN, PIN_LOW); //LED共阳,低电平时亮灯 rt_thread_mdelay(200); rt_pin_write(LED1_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_thread_mdelay(200); } void led2_blink(void) { rt_pin_write(LED2_PIN, PIN_LOW); //LED共阳,低电平时亮灯 rt_thread_mdelay(200); rt_pin_write(LED2_PIN, PIN_HIGH); //LED共阳,高电平时灭灯 rt_thread_mdelay(200); }``` 2、按键模块任务实现 在application文件下新建key.c和key.h,并在keil工程中的Applictions目录下添加key.c文件。代码如下:为了解决在evn中menuconfig后会移除led_alert.c和key.c,需要修改application目录下的Sconscript,修改后文件如下: ```import rtconfig from building import * cwd = GetCurrentDir() CPPPATH = [cwd, str(Dir('#'))] src = Split(""" main.c led_alert.c key.c """) group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) Return('group')``` 使用了4个按键,Key.c代码如下: ```#include
#include
#include
#include
#include
/* defined the KEY0 pin: PF9 */ #define KEY0_PIN GET_PIN(F, 9) #define KEY1_PIN GET_PIN(F, 8) #define KEY2_PIN GET_PIN(F, 7) #define KEY3_PIN GET_PIN(F, 6) void key0_cb(void *args) { if(rt_pin_read(KEY0_PIN)) { led0_off(); rt_kprintf("KEY0:Up!
"); } else { led0_on(); rt_kprintf("KEY0:Press!
"); } } void key1_cb(void *args) { if(rt_pin_read(KEY1_PIN)) { led1_off(); rt_kprintf("KEY1:Up!
"); } else { led1_on(); rt_kprintf("KEY1:Press!
"); } } void key2_cb(void *args) { if(rt_pin_read(KEY2_PIN)) { led2_off(); rt_kprintf("KEY2:Up!
"); } else { led2_on(); rt_kprintf("KEY2:Press!
"); } } void key_init(void) { rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT_PULLUP); //设置KEY0_PIN,输入模式,上拉 rt_pin_attach_irq(KEY0_PIN, PIN_IRQ_MODE_RISING_FALLING, key0_cb, RT_NULL); rt_pin_irq_enable(KEY0_PIN, PIN_IRQ_ENABLE); rt_pin_mode(KEY1_PIN, PIN_MODE_INPUT_PULLUP); //设置KEY1_PIN,输入模式,上拉 rt_pin_attach_irq(KEY1_PIN,PIN_IRQ_MODE_RISING_FALLING, key1_cb, RT_NULL); rt_pin_irq_enable(KEY1_PIN, PIN_IRQ_ENABLE); rt_pin_mode(KEY2_PIN, PIN_MODE_INPUT_PULLUP); //设置KEY0_PIN,输入模式,上拉 rt_pin_attach_irq(KEY2_PIN,PIN_IRQ_MODE_RISING_FALLING,key2_cb, RT_NULL); rt_pin_irq_enable(KEY2_PIN, PIN_IRQ_ENABLE); rt_kprintf("KEY PIN init!
"); } ``` 3、温湿度传感器任务实现 选用ATH10温湿度传感器,在RTT软件包上有写好的驱动,直接使用软件包即可。步骤如下: (1)选择aht10驱动:RT-Thread online packages – peripheral libraries and drivers,选择(*)aht10: digital humidity and temperaturesensor ath10 driver library。(2)添加I2C驱动:Hardware Drivers Config – On-chip Peripheral Drivers,选择(*)Enable I2C1 BUS(software simulation)。 (3)添加Sensor框架:RT-Thread Components – Device Drivers, 选(*)Using Sensor device drivers。 (4)更新在线软件包,pkgs –update;更新keil工程,scons –target=mdk5。会发现在工程文件中增加了aht10文件夹和Sensors文件夹。 4、main.c```#include
#include
#include
#include
#include
#include
#include "sensor_asair_aht10.h" int main(void) { int count = 1; struct rt_sensor_config cfg; led_init(); key_init(); cfg.intf.dev_name = "i2c1"; cfg.intf.user_data = (void *)AHT10_I2C_ADDR; rt_hw_aht10_init("aht10", &cfg); led0_blink(); while(count++) { aht10_read_temperature(); aht10_read_humidity(); rt_thread_mdelay(1000); } return RT_EOK; } ``` 四、 运行结果 由于论坛发帖无法显示图片,仅复制文字。 ``` \ | / - RT - Thread Operating System / | \ 4.0.1 build Oct 18 2019 2006 - 2019 Copyright by rt-thread team lwIP-2.1.0 initialized! [I/SAL_SKT] Socket Abstraction Layer initialize success. LED init! KEY PIN init! [I/sensor] rt_sensor init success [I/sensor] rt_sensor inKEY1:Press! KEY2:Press! t success KEY0:Press! temp:26 humi:57 temp:26 humi:57 ```
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
917
关于作者
nsdcwj
这家伙很懒,什么也没写!
提问
2
回答
0
被采纳
0
关注TA
发私信
相关问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT Thread 源码分析笔记 :线程和调度器
2
RT-Thread项目助手v0.2.0 - 支持Env Windows
3
RttreadV5.10上,GD32F450Z RTC时间显示问题
4
rt-smart启动流程分析
5
EtherKit快速上手PROFINET
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
聚散无由
2
篇文章
12
次点赞
Wade
2
篇文章
2
次点赞
xiaorui
1
篇文章
1
次点赞
zhuzhuzhu
1
篇文章
1
次点赞
catcatbing
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部