Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
[第二期 空气质量分析仪]第1周作业 - part1
发布于 2019-08-27 23:23:20 浏览:1162
订阅该版
很高兴参加此次活动,也是第一次参与,感觉压力比较大:Q,挤出时间看视频、看论坛、看熊大大的著作。之前一直整标准库,为了学习rtt,就奋不顾身的投入到HAL库的学习中,还不太习惯:L。还有待进一步的尝试、总结。 按照官网文档中bsp教程,恕我愚钝,花了3天还是没能结合CUBE MX把bsp搞出来,没办法我只有直接用rt-thread-v4.0.1.zip包里的bsp文件夹里的stm32f10x-HAL。在解压的文件夹里使用ENV工具,更改了硬件配置,这里我使用的stm32f103ve的最小系统板。如下图1所示,我指定了主控型号、开启了uart1和uart3(为以后另一个应用做准备)。图3所示,我更改了控制台的输出缓存。 [align=center]![更改配置.png](/uploads/201908/27/225443etztivsd9t5nv9vd.png)[align=center]图1 更改系统配置 [align=center]![输出.png](/uploads/201908/27/225858h6x50m319e9gvyyw.png)[align=center] 图2 更改控制台输出缓冲区 经过保存后,使用scons --target=mdk5命令后,便生成了一个基于stm32f103ve的工程了。如下图3所示。 [align=center]![空bsp.png](/uploads/201908/27/230249lzjhjammyymblajn.png)[align=center]图3 基于stm32f103ve的工程 目前该工程,除了具有rtt提供的OS功能以外,什么也没有。为此根据最小系统板载led资源(也为了验证该工程的正确性),为其添加编写一个驱动程序,并使用任务来访问该资源。 1. 主程序。 对板载LED的初始化,我起初是想放到board.c文件中,但是细看该文件的做用好像又不合适。于是先放到main函数中,准备下一次再将其添加到一个初始化任务中,让其在第一时刻被OS调用后,初始完板载硬件系统后,再让OS kill掉自身,应该合适些吧。```#include
#include
/* ************************************************************************* * 变量 ************************************************************************* */ /* 定义线程控制块 */ static rt_thread_t led1_thread = RT_NULL; /* ************************************************************************* * 函数声明 ************************************************************************* */ static void led1_thread_entry(void* parameter); int main(void) { LED_GPIO_Config(); /* user app entry */ led1_thread = /* 线程控制块指针 */ rt_thread_create( "led1", /* 线程名字 */ led1_thread_entry, /* 线程入口函数 */ RT_NULL, /* 线程入口函数参数 */ 512, /* 线程栈大小 */ 3, /* 线程的优先级 */ 20); /* 线程时间片 */ /* 启动线程,开启调度 */ if (led1_thread != RT_NULL) rt_thread_startup(led1_thread); else return -1; } /* ************************************************************************* * 线程定义 ************************************************************************* */ static void led1_thread_entry(void* parameter) { while (1) { LED1_ON; rt_thread_delay(100); /* 延时100个tick */ rt_kprintf("led1_thread running,LED1_ON
"); LED1_OFF; rt_thread_delay(100); /* 延时100个tick */ rt_kprintf("led1_thread running,LED1_OFF
"); } }``` 2. bsp_led.h 。第一次使用HAL编写LED驱动文件,还是安装固件库的习惯,不知道这样行不行,还烦请各位批评指正:lol```#ifndef __LED_H #define __LED_H #include
#include
#include "stm32f1xx_hal.h" /* 定义LED连接的GPIO端口, 用户只需要修改下面的代码即可改变控制的LED引脚 */ #define LED1_GPIO_PIN GPIO_PIN_7 //#define PIN_LOW 0 //#define PIN_HIGH 1 /* 定义控制IO的宏 */ //#define LED1_OFF rt_pin_write(LED1_GPIO_PIN, PIN_HIGH); // 没有成功 //#define LED1_ON rt_pin_write(LED1_GPIO_PIN, PIN_LOW); // 没有成功 #define LED1_OFF HAL_GPIO_WritePin(GPIOE, LED1_GPIO_PIN, PIN_HIGH); #define LED1_ON HAL_GPIO_WritePin(GPIOE, LED1_GPIO_PIN, PIN_LOW); void LED_GPIO_Config(void); #endif /* __LED_H */``` 3. bsp_led.c```#include
void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOE_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); LED1_OFF; }``` 4. 运行结果,如下图4所示。[align=center]![uart_led.png](/uploads/201908/27/231324rc3kw86zddk1v48z.png)[align=center]图4 运行结果 通过串口上位机的分析,证明基于rtt的该工程基本运转正确。[align=center]
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
1.2k
关于作者
mabo124
这家伙很懒,什么也没写!
提问
13
回答
1
被采纳
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
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
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
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部