Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
[第3期 空气质量分析仪]第一周作业。提交学习营每周的作...
发布于 2019-10-12 11:00:36 浏览:1113
订阅该版
* 本帖最后由 zomejy 于 2019-10-12 11:00 编辑 * 第一周任务相对来说还是很友好很基础的,主要任务有以下几点: 任务 1:BSP 跑起来 任务 2:完成报警模块 任务 3:完成按键模块 任务 4:完成温湿度传感器的驱动 和明显各个任务是层层递进的,并且有易到难,今天是第一天,由于上课的原因,我只完成了前面两个相对容易的任务,可能还不知道导员他们给我们挖的坑在哪,等我找到了肯定要好好跳给她们看(嘿嘿;P),然后再爬出来。不能辜负她们是不是,(哈哈哈,开玩笑了,学还是要学会的),话不多说,这就开始啦! 任务一: 个人认为这个任务主要是针对开发板的移植 在这里我介绍两种方法: 1、直接从 CubeMX 中导入该软件包 2、在官网下载rtthreadd源码。 两种方法选择一般看官网有没有自己手中板子的bsp和个人喜好,一般开发板的话官网bsp都有。 方法一:官网有专门的教程介绍相信你们和我一样,肯定一看就会啦,看的话[点这里](https://www.rt-thread.org/document/site/tutorial/nano/cube/an0032-nano-mx5/)哦。 方法二:[点这里](https://github.com/RT-Thread/rt-thread.git)下载最新版rtt包,下载完后解压然后进入下面这个路径(以正点原子f429为例),用ENV工具使用scons --dist命令将所需要的文件给拷贝到 dist 后的文件夹中,这样就可以把自己板子的bsp提取出来了,如果没有配置ENV的话也可以散出不必要的bsp来实现较为精简的RTT包,配置ENV官网也有[教程](https://www.rt-thread.org/document/site/programming-manual/env/env/)哦。 ![第一张.png](/uploads/201910/11/205413ynuf3hb4j86cnccy.png) ok这样第一个任务就完成了。 任务二: 首先keil工程,注册自己要用的pin,没错教程[也在官网](https://www.rt-thread.org/document/site/programming-manual/device/pin/pin/),如果使用 rt-thread/bsp/stm32 目录下的 BSP 则可以使用下面的宏获取引脚编号: GET_PIN(port, pin) 如: ```/* defined the LED0 pin: PB1 */ #define LED0_PIN GET_PIN(B, 1)```注册完之后就可以使用IO口了,下面是我写的led警报的代码```#include
#include
#include
#include
/* defined the LED0 pin: PB1 */ #define LED0_PIN GET_PIN(B, 1) /*接口可以初始化 led*/ void led_init() { /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); } /*接口可以点亮 led*/ void led_on() { rt_pin_write(LED0_PIN, PIN_LOW); } /* 接口可以熄灭 led*/ void led_off() { rt_pin_write(LED0_PIN, PIN_HIGH); } /*接口可以使 led 闪烁,200ms 闪烁周期*/ void led_blink() { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(200); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(200); rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(200); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(200); }``` 在main函数调用发现没什么问题,这样第二个任务就可以了哦。 任务三: 昨天看到人家大佬都整完了,心里好慌啊,睡觉的时候都在想,早上赶紧来了,整到现在终于可以交作业了,还是挺开心的。任务三还是挺简单的主要是keypin口的控制;和裸机控制差不多,但是由于rtt系统带来的便利,初始化简单太多了。 我的代码是这样的: ```#include
#include
#include
#include
int key_sign = 0; void key_init(void) { rt_pin_mode(key_0, PIN_MODE_INPUT_PULLUP); rt_pin_mode(key_1, PIN_MODE_INPUT_PULLUP); } int key_scan(void) { static int key_up=1; //按键松开标志 if(key_up&&(rt_pin_read(key_0) == 0 || rt_pin_read(key_1) == 0)) { rt_thread_mdelay(10); key_up=0; if(rt_pin_read(key_0) == 0) key_sign = 1; else if(rt_pin_read(key_1) == 0) key_sign = 2; rt_kprintf("keysign %d
",key_sign); } else { key_up = 1; } return key_sign; } ```注意添加.c和头文件文件夹哦,不要和我一样笨哦。 任务四: 由于我的传感器(DHT11),软件包里是有的所以配置相对简单。 主要步骤: 1、打开自己的bsp文件夹,进入env; 2、输入menuconfig进入以下目录: ![dht11.png](/uploads/201910/12/103801eyaxx80px0b0yo5o.png) 3、由 menuconfig 配置保存后,使用 pkgs --update 命令将该软件包下载到本地 bsp 工程中,再使用scons --target=mdk5生成文件就可以了。 现象: ![第三.png](/uploads/201910/12/104054oe7kgzfgehinggne.png) 欧克,这周任务基本完成了,其实也遇到了很多问题。 主要有: 1、配置完bsp发现不能用,这个我又按照步骤来了两遍,终于可以了,还是cubemx不会用啊,刚开始学还是要多用用。 2,配置完任务4,发现dht11老是失败,不知道咋回事,检查一遍发现也没错啊,下一遍裸机代码,发现硬件也没有问题,然后有下载了一次我配置的代码,哇!amazing!又可以了,好神奇啊,看板子的手册发现,该传感器的输出口和一个中断口连接,需要先对 中断口数据 进行一次读取操作,以释放 IIC_INT 引脚,才可以。目前不确定是不是这个原因,猜测是这个原因或者时序的问题。 3、我好蠢啊,写好的线程,不能用为啥呢,主函数直接一个while(1);直接不给别的线程反应时间,我服了我自己了,就产生以下现象; ![第四.png](/uploads/201910/12/105409us7zcefi4f74s5mm.png) 真是太蠢了。 4、我自己写的.c文件加到工程后,再用env配置软件包更新生成之后会给我删除掉,这个问题是怎么解决的? 这个问题我们亲爱的导员猫薄荷准确的给了我回答: > 在你的代码文件加下修改SConscript文件 ![第五.png](/uploads/201910/12/105725lwoqob5lwwwlojwo.png)这样就可以了,一下就把我问题解决了呢。 好了,写完了赶紧去看我迟到一个小时的动漫了。 希望有做的不好的地方我可爱的导员们可以给予指导,谢谢啦!
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
1.1k
关于作者
zomejy
这家伙很懒,什么也没写!
提问
11
回答
21
被采纳
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
freemodbus主机在freertos的适配,参考rtthread例程
2
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
3
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
4
RT-Thread EtherKit开源以太网硬件正式发布
5
还在担心bsp不好维护吗?快使用yml管理主线bsp
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
12
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
用户名由3_15位
13
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
8
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部