c++获取串口设备名称_RTThread PIN设备学习笔记
前面我们学习了RTT的UART设备的使用,不得不说真的超级给力呀,不到100行秒杀任何MCU最原始的串口编程模式,不得不感叹RTT发展如此强大,文章链接:
RT-Thread UART设备驱动框架初体验(中断方式接收带\r\n的数据)
今天来点简单的吧!RT-Thread PIN设备
!学习一个新东西,我个人主张带着需求去学习,而不是漫无目的的去学,有了需求驱动,并且是一个努力付出就可以拥有的成果,那么这还不容易嘛!
我们接下来将基于小熊派开发平台进行实践。
1、实践需求
1.1 硬件配置
LED、两个按键
1.2 软件需求
当按下按键1,LED点亮,当按下按键2,LED熄灭
这个需求相当简单,入门级别,通过这个案例,也让我们重新认识到RTT开发的便捷性!先别扯淡,往下干就完了!我们将基于RT-Thread Studio来构建。
2、开始实践
2.1、RT-Thread Studio工程创建与基础配置
(1)创建RT-Thread项目
(2)配置项目
配置注意
需要添加项目名称和项目的位置,这里我用的是自定义路径,而不是默认的缺省位置。
RT-Thread选择v4.0.2,这个版本包含基本的组件,而选择nano的话则不包含。
厂商目前只支持ST,相信后面会支持更多。
基于芯片,可以选择更多支持RTT的STM32芯片,由于我用的是小熊派,所以需要基于STM32L4系列,芯片是STM32L431RCTx。
控制台串口,小熊派是UART1发送和接收分别是PA9和PA10,这里非常人性化,调试串口直接就可以在配置的时候预置了。
调试器选择ST-Link,SWD方式下载。
2.2、代码编写
工程配置完成后,默认生成的是一个实现LED翻转的例程,其实这个基础例程就是使用了PIN设备,我们按照需求简单修改一下,后续再进行分析。
2.2.1 打开原理图,找LED和按键的管脚
2.2.2 根据需求编写代码
写代码之前有必要了解下需求范围内的PIN设备的使用流程:
- 第一、获取引脚编号
GET_PIN(port, pin)
port:比如你要获取GPIOA的第5个管脚,那么:port = Apin = 5代码就这么写:GET_PIN(A,5)通常我们直接一个宏:#define LED_PIN GET_PIN(A,5)
- 第二、设置引脚模式
void rt_pin_mode(rt_base_t pin, rt_base_t mode);
参数 | 描述 |
---|---|
pin | 引脚编号 |
mode | 引脚工作模式 |
引脚编号就是通过GET_PIN获取的,而工作模式在RTT的pin.h里定义,根据我们的需求进行选择:
#define PIN_MODE_OUTPUT 0x00 /* 输出 */#define PIN_MODE_INPUT 0x01 /* 输入 */#define PIN_MODE_INPUT_PULLUP 0x02 /* 上拉输入 */#define PIN_MODE_INPUT_PULLDOWN 0x03 /* 下拉输入 */#define PIN_MODE_OUTPUT_OD 0x04 /* 开漏输出 */
- 第三、设置或读取引脚电平
设置引脚电平 void rt_pin_write(rt_base_t pin, rt_base_t value);读取引脚电平 int rt_pin_read(rt_base_t pin);
设置引脚电平 void rt_pin_write(rt_base_t pin, rt_base_t value);
参数 | 描述 |
---|---|
pin | 引脚编号 |
value | 电平逻辑值,可取 2 种宏定义值之一:PIN_LOW 低电平,PIN_HIGH 高电平 |
读取引脚电平 void rt_pin_read(rt_base_t pin);
参数 | 描述 |
---|---|
pin | 引脚编号 |
返回值 | -- |
PIN_LOW | 低电平 |
PIN_HIGH | 高电平 |
了解了基本的使用后,我们可以开始根据需求编写应用程序。
根据需求编写应用程序
/* * Copyright (c) 2006-2019, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2019-09-09 RT-Thread first version */
#include #include #include #define DBG_TAG "main"#define DBG_LVL DBG_LOG#include #define LED0_PIN GET_PIN(C, 13)#define KEY0_PIN GET_PIN(B, 2)#define KEY1_PIN GET_PIN(B, 3)int main(void){ /*配置LED管脚为输出*/ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); /*配置按键0为上拉输入*/ rt_pin_mode(KEY0_PIN, PIN_MODE_INPUT_PULLUP); /*配置按键1为上拉输入*/ rt_pin_mode(KEY1_PIN, PIN_MODE_INPUT_PULLUP); /*配置LED管脚默认输出低电平*/ rt_pin_write(LED0_PIN, 0); while (1) { /*读取KEY0按键,如果为低电平则点亮LED灯*/ if (rt_pin_read(KEY0_PIN) == PIN_LOW) { rt_pin_write(LED0_PIN, PIN_HIGH); } /*读取KEY1按键,如果为低电平则熄灭LED灯*/ if (rt_pin_read(KEY1_PIN) == PIN_LOW) { rt_pin_write(LED0_PIN, PIN_LOW); } } return RT_EOK;}
2.2.3 编译程序
2.2.4 程序下载到小熊派,然后进行测试
测试通过!
PIN设备还支持配置其它模式,比如可编程控制中断等,后续根据需求单独列出来,相比stm32CubeMX+Keil MDK,RT-Thread Studio更具优势,节省很多配置的时间,让开发者可以更专注于应用,后期我们将会更加深入的去分析实现过程,我们不但要知其然,而且要知其所以然,这才是我们的终极目的!
往期精彩
你真的会使用思维导图吗?四个方面阐释思维导图的运用
C语言#和##连接符在项目中的应用(漂亮)
超轻量级网红软件定时器multi_timer(51+stm32双平台实战)
变量命名还在谷歌百度翻译?OUT啦!分享一个我日常工作中常用的变量命名神器!
若觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
c++获取串口设备名称_RTThread PIN设备学习笔记相关推荐
- Qt 串口获取串口设备名称
前言` 最近在用QT弄一个串口上位机,以前用QT做的串口工具在选择串口的时候只能通过串口号选择,在有多个串口设备的时候不是很方便,所以这次就想着搞成选择的时候可以显示串口设备名称的方式. 1.实现效果 ...
- 上海lin上海linux培训ux,lin教材ux字符驱动设备-学习笔记(最新实例).pdf
- 1 - 字符驱动开发学习笔记 Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过 这些函数使得Windows 的设备操作犹如文件一般.在应用程序看来,硬件设备只 是一个设备文件, ...
- 获取串口设备名称 获取设备管理器里的硬件名称 转
简介:在串口通信的程序中,如果PC上同时连接有多个串口,那么从应用程序里打开串口时,就很难知道是哪一个串口,这时候就必须要通过设备管理器去查看串口名称,这份代码就是解决这个问题,调用系统api,读取串 ...
- RT_thread的IIC设备学习笔记
目录 前言 1 IIC简介 2 RTthread IIC总线设备API 2.1 IIC设备相关结构体 2.2 rtthread的I2C初始化API 2.3 发现IIC总线设备API 2.4 IIC通信 ...
- [linux驱动]linux块设备学习笔记(二)
1,gendisk结构体 在linux内核中,使用gendisk结构体来表示一个实际的磁盘设备的抽象,结构体定义如下所示: [cpp] view plaincopy struct gendisk { ...
- 嵌入式存储设备学习笔记
更多内容可关注微信公众号 ##各种非易失性存储设备 ###ROM/PROM/EPROM/EEPROM 在NOR/NAND flash出现之前,主要的非易失性存储设备是EPROM和EEPROM. ROM ...
- 找一个网页,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议时间、名称和地点——python学习笔记
1. 题目: 找一个网页,例如https://www.python.org/events/python-events/,用浏览器查看源码并复制,然后尝试解析一下HTML,输出Python官网发布的会议 ...
- 关于Intel pin的学习笔记(一)——KNOB< TYPE>构造函数的解释
关于KnobOutputFile()函数的解释 对于KnobOutputFile()这个函数我在网上很少能找到对他的详细解释,今天好好的研究了一下,顺便记录下来. 首先对这个函数的第一映像是,为啥文件 ...
- python pandas修改列名,Python_Pandas学习笔记02:DataFrame获取列名和修改列名
Python_Pandas学习笔记02:DataFrame获取列名和修改列名 Python_Pandas学习笔记02:DataFrame获取列名和修改列名 一.参考资料 [1].?Pandas获取列名 ...
最新文章
- UVA 10570 Meeting with Aliens
- 装服务器显示磁盘脱机,服务器磁盘处于脱机
- Python dict() 函数
- Unity shader入门之数据类型
- TokenInsight:反映区块链行业整体表现的TI指数较昨日同期上涨3.55%
- 2017《Java技术》预备作业 杨阳
- CSP学习之ASN.1编码(一)
- 内核调试工具 — kdump crash
- Julia : 用@async提升循环性能
- linux shell 数字雨,cmd命令如何实现数字雨
- 手机端如何维持登录状态
- Vray材质学习笔记08——陶瓷材质
- 前端开发中的脚手架是什么意思
- java.sql.SQLException: 无效的列类型
- C语言关键字 restrict(一)
- 【干货】你常用的5种地图数据汇总对比,值得收藏~
- 计算机网络-以太网,局域网,城域网,广域网,互联网,因特网,万维网的区分
- 中天视听王 未来软件园
- 使用Keras进行单模型多标签分类
- 自用笔记-Qt5.14.2开发Android环境搭建