当前位置: 首页 > news >正文

【TI MSPM0】GPIO学习

 一、文件样例查找

以GPIO软件轮询为例


 下面的四个文件夹分别为不同开发环境提供支持

二、工程导入 

 1.点击file-点击import project

2.点击browse

 3.找到对应的文件打开,选择

推荐使用ticlang,能够提供更加优化的效率 点击finish

三、工程学习

1.readme 文件 (与HTML文档内容一样,格式不同)

Example Summary工程实例的简单说明

根据在软件轮询当中读取到的数字输入 来进行 GPIO的输出


Peripherals& Pin Assignments

使用到的外设和引脚情况 

使用到了PA0和PB21的引脚

 

SYSCTL、EVENT、DEBUGSS是系统基本外设,每个工程都会有


 BoosterPacks, Board Resources & Jumper Settings

扩展板、板资源和跳线设置 主要是对跳线的说明 不需要太过关注


Device Migration Recommendations  设备迁移推荐

本工程是基于3507设计的,如果需要迁移,可以参考手册


Low-Power Recommendations低功耗推荐设置


Example Usage 样例使用

编译,加载运行样例,按下button,观察led1翻转

因此,从上面看来,最重要的是Example Summary说明样例的用处和Example Usage告诉我们怎么去使用 

 2.syscfg  图形化配置工具

通过这个界面,就可以进行图形化的配置,从而生成工程 

3. .c文件 是main函数

 4.4个文件夹的主要内容

  • 1-sysconfig生成的代码
  • 2-相关文件
  • 3-debug 编译后生成的文件
  • 4-targetconfigs 

5.编译运行

点击project-build all(Ctrl+B)

 6.烧录到开发板

点击run-project 等待下载

当以后添加了多个工程时,可以直接在这里选择

7.运行程序

点击continue运行程序, 点击stop 退出程序 

8.字体大小更改 

 file-preference -general settings

四、代码讲解

1.头文件

#include "ti_msp_dl_config.h"

ti_msp_  ti msp 系列

dl_config.h 代表driverlib库,在下面的文件夹中生成

2.初始化

调用了driverlib库的初始化

SYSCFG_DL_init();

按住Ctrl ,再点击 该行代码,进入对应的函数中去

可以在.c文件中找到对应的函数

可以看到,首先初始化电源,然后是GPIO的初始化 还有sysctl 可以帮助初始化各个模块

3.while(1)循环

  • 宏定义 定义了GPIOB和GPIO PIN21由此可以看出if判断就是去读GPIO PB21上面的电平,看它的高低电平,最终返回0或1 如果是0就set pins ,如果是1 就clear pins
  • 引脚配置通过宏定义可以看出,引脚配置是通过配置工具生成的,下面的注释也说明了,不要直接进行头文件的修改,是通过配置工具生成的
    /*
     *  ============ ti_msp_dl_config.h =============
     *  Configured MSPM0 DriverLib module declarations
     *
     *  DO NOT EDIT - This file is generated for the MSPM0G350X
     *  by the SysConfig tool.
     */

 五、sysconfig工具

1.最顶上是工程生成                                                  

     

  • 选择编译器为TIClang  
  • 包含的库中勾选了 DriverLib 其他的没有用到就没有勾选,优化代码的体积

2. board

需要用到swd协议进行下载和调试 

 3.GPIO 

上面的两个相当于两个组,在组内是可以有多个PIN的 

可以给不同的模块分到不同的组里面,这样就会更加简洁

  •  Name名称的设置会影响.h的输出
  • Port是组的port,不是引脚的如果选择PortA或PortB的话,就意味着只能从A或B里面设置对应引脚 选择Any 就可以选择任意引脚
  • 组里的pin 设置Name名称、选择Direction输入或输出、Initial Value初始值(set或clear代表高或低)、IO Structure引脚结构(标准,支持唤醒,高速,高的驱动能力,耐压5v的开漏输出 没有要求可以选择any)
  • 组里的pin Assigned Port 分组 根据对应的组别选择,Assigned Port Segment(一个组里有32个PIN,0-15属于lower,16-31属于upper,默认是any,一般不需要手动去改,当输入确定引脚时,会自动选择对应的组别)
  • Digital IOMUX Features Internal Resistor(pull-up上拉 pull-down下拉)

六、新建空白工程

1.导入空白工程模版

 按照上面的方法,找到空白工程并导入

2.空白工程简介

使用Driverlib库,展示了基本的空白工程只有主函数文件和它的初始化 

3.配置引脚

 

4.提示信息

代表还处在调试状态,是否重新加载

5.函数查找 

 进入网页:MSPM0G1X0X_G3X0X Driver Library

 在搜索栏里查找想要学习的函数

  • 返回值是32位 无符号整型
  • 参数有两个,一个是GPIO 端口,一个是引脚
  • 功能是读取一组GPIO端口
  • 读取的参数,第一个指向外设,就是端口,第二个引脚,如果有多个引脚时,用或|连接


验证 DL_GPIO_readPins()函数

将函数读取到的值赋值给val,对其返回值进行研究 

#include "ti_msp_dl_config.h"
#include <cstdint>

uint32_t val;
int main(void)
{
    SYSCFG_DL_init();

    while (1) {
        val=DL_GPIO_readPins(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN_BUTTON_S2_PIN)
        if(!val)
        {
            DL_GPIO_setPins(GPIO_LED_PORT,GPIO_LED_PIN_LED_1_PIN);
        }
        else{
            DL_GPIO_clearPins(GPIO_LED_PORT,GPIO_LED_PIN_LED_1_PIN);
        }
    }
}

在watch一栏新添加 点击+即可

 由此看出PB21引脚是高电平,就在第21位上返回1

如果还同时读取PB20 如果PB20是高的话,就在第20位上返回1

可以更改watch的值的进制形式 

        

相关文章:

  • 五大基础算法——递归算法
  • AI软件栈:推理框架(二)-Llama CPP1
  • 软件需求分类、需求获取(高软46)
  • 【专栏预告】《VR 360°全景视频开发:从GoPro到Unity VR眼镜应用实战》
  • 量化交易学习笔记02:双均线策略
  • YOLO简史:从YOLOv1到YOLOv12的技术革新与演进
  • 类和对象C++ (未完:对象特征)
  • 一周学会Flask3 Python Web开发-SQLAlchemy更新数据操作-班级模块
  • 蓝桥模拟+真题讲解
  • MySQL -- 基本函数
  • vmware环境(vcenter许可证过期问题)
  • pytorch小记(八):pytorch中有关于.detach()的浅显见解
  • 暨南大学MEM复试资料
  • C++ 位图 bitset
  • 设备管理VTY(Telnet、SSH)
  • 软件工程--瀑布模型和敏捷模型的解释预定义
  • 【网络】Caddy 服务器如何提供 TLS(Transport Layer Security)(传输层安全协议)
  • DeepSeek(3):DeepSeek R1 提示词⼯程
  • Java缓存String(字符串常量池)、Integer (-128 到 127 )
  • Webpack 打包技术及逆向数据分析研究
  • 外交部发言人就澳大利亚联邦大选结果答记者问
  • 竞彩湃|拜仁冲冠战役或有冷门,大巴黎留力欧冠半决赛
  • 礼来一季度净利增近三成,明星GLP-1药物替尔泊肽贡献近半收入
  • 车展之战:国产狂飙、外资反扑、智驾变辅助
  • 世界黄金协会:一季度全球黄金投资需求同比增170%
  • 神舟十九号航天员乘组平安抵京