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

03DSP学习-利用syscfg配置IO

上一篇博客介绍了syscfg,对syscfg有了初步的了解,但是在真正使用上它之前,还不能理解他是一个神器。

(在写博客的时候,我是在从头到尾重新完成这个步骤,希望对初学者有点帮助)

找到Board Component

打开syscfg文件,找到Board Component选项,发现有一个LED。实际上,这也是一个IO口,只是配置成输出,用来点亮LED。我们以点亮一个LED为例学习。

配置GPIO

点击右上角的ADD按钮

可以发现,syscfg自动定义这个LED的名字为myBoardLED0,图中①所示。图中②所示可以选择两个LED,分别是LED4和LED5,这是因为TI的这款F28379D的LAUNCHPAD在原理图上就定义了这两个LED的标号,也只提供了这个两个LED来共开发者使用。我们以LED4为例。

注意,下图的①、②和③是可以展开的,是对GPIO的详细配置。通过这个我们就已经可以初步的了解如何配置GPIO了。

例如上图①,定义了LED对应的GPIO,由于是用的板载的Hardware所以默认了该Pin是数字模式且方向为输出,输出模式为配置成了推挽。

图中②是可以将该IO链接至外部中断,这里我们先不管。

最后③是确定外设的GPIO序号,选择的是GPIO31,与原理图是相对应的。

为什么说,这个Board Component实际上就是配置GPIO呢?请看下图,当配置完LED后,发现自动在GPIO处配置了一个一模一样的。由此也可以发现,当我们需要配置一个GPIO时,也可以直接在GPIO处配置,尤其是非板载的外设。

好了以上便是GPIO的配置。我们 Ctrl+S保存。

编译工程

注意下图中,CPU1_RAM 文件夹是不能展开的,Generated Source中也是没有文件的,我们点击③编译。

编译完成后,出现了上述文件夹中出现了文件,其中最关键的就是board.c 和 board.h文件,下面我们继续了解。

了解syscfg生成的文件

下图为board.c文件

从上面可以发现,Board_init函数对所有配置了的外设进行了初始化,这里我们只配置了GPIO。同时也能够注意到这里对LED0对应的GPIO进行了宏定义,我们去board.h中观察。从下图可以看出,这里宏定义了myBoardLED0_GPIO 为 31,这是因为我们使用的GPIO对应的就是Pin 31.

使用syscfg生成的文件

上面编译过后,只是syscfg生成了一些外设的初始化函数供我们使用,我们点开main.c文件,发现并没有调用,需要我们自己调用。

我们写一个简单的函数。注意需要在一开始包含board的头文件 board.h。函数实现一个功能,让DSP在死循环中计数,当计数达到10000时,翻转IO。注意!由于DSP的主频较高,所以计数到10000翻转IO我们也看不到LED的闪烁,所以我用了一个LED_Status来观察该Pin的寄存器的值。从下面两张图可以看出,寄存器是在0-1变化的。

以上便完成了对syscfg的使用。我们进行一个小结

syscfg使用小结

①首先,利用syscfg配置我们需要的功能;

②然后,编译工程,syscfg会更新生成的board.c和board.h文件;

③再,在main.c中包含board.h头文件;

④接着, 在main.c中调用board.c中的初始化函数;

⑤最后,完成了对syscfg中配置了的外设的初始化以及调用。

注意~!

我们在使用了syscfg之后,还用了例如GPIO_togglePin();GPIO_readPin()等GPIO的操作函数,这就不得不提 TI 提供的driverlib了,也是非常好用的。我们后面再一起学习~

http://www.lryc.cn/news/446459.html

相关文章:

  • web - RequestResponse
  • 个人文章汇总
  • Java | Leetcode Java题解之第436题寻找右区间
  • 大模型智能体在金融公告理解领域的应用 | OPENAIGC开发者大赛高校组AI创新之星奖
  • 链表入门(LeetCode题目)
  • kibana开启访问登录认证
  • Java 14Java 15新特性概述
  • 流量特征随机ua修改
  • CSP-S 2024 提高级 第一轮(初赛) 阅读程序(3)
  • 如何在 Rust 中通过 Rumqttc 实现 MQTT 通信
  • 广东高校建设AIGC实验室时需要注意哪几个关键点?
  • 设计模式-PIMPL 模式
  • Docker部署MongoDB教程
  • 堆排序易错点
  • 安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机
  • React学习笔记(四)——React 组件生命周期
  • PHP的guzzlehttp/guzzle库在碰到各种异常时的场景
  • 多机部署,负载均衡-LoadBalance
  • Hadoop安装与配置
  • 一个自制的比较low的刷题软件
  • 【Java 集合】List接口 —— ArrayList 与 LinkedList 详解
  • 通信工程学习:什么是PNF物理网络功能
  • Unity的Text组件中实现输入内容的渐变色效果
  • network-scripts目录下没有ens33文件的问题
  • OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】
  • 10.Lab Nine —— file system-下
  • 低代码中实现数据映射的必要性与方案
  • SpringBoot集成阿里easyexcel(一)基础导入导出
  • 四元组问题
  • 如何用Prometheus监控禁用了Actuator的SpringBoot?