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

DSPTMS320F28335入门

DSPTMS320F28335系列1、GPIO和点亮LED

  • 一、C语言基础
  • 二、GPIO的知识
  • 三、结构体代码
    • 3.1、结构体变量:GpioCtrlRegs
    • 3.2、第一级成员:GPCMUX1
    • 3.3第二级成员:bit
    • 3.4结构体展示
  • 四、代码GPIO点亮LED灯

一、C语言基础

结构体

struct_ strframe str.fra_datal; //定义了一个结构体变量,变量名为str_fra_datal
结构体是一种复合数据类型,它定义的变量中有三种不同性质的元素,它和其他的基本数据类型功能是一样的。对这种类型的变量的赋值方法,如str_fra_data1.sh_fra1=Ox04;还可以定义指针或是数组,如struct str.frame*str_fra_data2;,这时的赋值方法为:str_fra_datal -> sh_fra1=Ox04;。所有的C语句都以“﹔”结尾。
声明描述了一个short、一个long和一个float变量组成的结构体。但是注意,它并没有创建一个实际的数据对象,而是描述了一个组成这类对象的元素。因此,我们有时候也将结构体声明叫做模板,因为它勾勒出数据该如何存储,并没有实例化数据对象。
1、首先使用关键字struct,它表示接下来是一个结构体。
2、后面是一个可选的标志(str_fra1),它是用来引用该结构体的快速标记。因此我们以后就可以这样创建数据对象。
struct str_fra1 str_fra_data1;//把str_fra_data1设为一个可以使用str_fra1结构体的结构体变量,则str_fra_data1这个变量就包含了其str_fra1结构体中的所有元素。
2、接下来就是一个花括号,括起了结构体成员列表,及每个成员变量,使用的都是其自己的声明方式来描述,用分号来结束描述;
3、例如:char title[MAXTITL];字符数组就是这样声明的,用分号结束;
注意:其中每个成员可以使用任何一种C数据结构甚至是其他的结构体,也是可以的;
在结束花括号后的分号表示结构体设计定义的结束。
4、关于其struct声明的位置,也就是这段代码要放到哪里。同样这也是具有作用域的。
5、这种声明如果放在任何函数的外面,那么则可选标记可以在本文件中,该声明的后面的所有函数都可以使用。如果这种声明在某个函数的内部,则它的标记只能在内部使用,并且在其声明之后;
6、一般格式就是:
struct 结构体名(也就是可选标记名){ 成员变量;};//使用分号表示定义结束。
定义结构体变量
之前我们结构体类型的定义(结构体的声明)只是告诉编译器该如何表示数据,但是它没有让计算机为其分配空间。我们要使用结构体,那么就需要创建变量,也就是结构体变量; 创建一个结构体变量;
struct book library;
看到这条指令,编译器才会创建一个结构体变量library,此时编译器才会按照book模板为该变量分配内存空间,并且这里存储空间都是以这个变量结合在一起的。这也是后面访问结构体变量成员的时候,我们就要用到结构体变量名来访问。
struct book的作用:
在结构体声明中,struct book所起到的作用就像int,,,,等基础数据类型名作用一样。
struct book s1,s2,*ss;
定义两个struct book结构体类型的结构体变量,还定义了一个指向该结构体的指针,其ss指针可以指向s1,s2,或者任何其他的book结构体变量。struct book library;等效于;struct book{ char … …. …… }librar;这两种是等效的,只是第一种可以减少代码的。

二、GPIO的知识

CPU 要处理外界二进制信息(数字量),要将其存放在存储器中,就需要外界信息源与CPU或存储器进行交换,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335有88个 GPIO,F28335将这88个 GPIO口分成了A、B、C这3大组,A组包括 GPIO0~GPIO31,B组包括GPIO32~GPIO63,C组包括GPIO64~GPIO87,每个引脚都复用了多个功能,同一时刻,每个引脚只能用该引脚的一个功能。
88个GPIO分为3组:

组名GPIO范围写法
A组GPIO0 - GPIO31GPA
B组GPIO32 - GPIO63GPB
C组GPIO64- GPIO88GPC

2、寄存器及其配置。

控制寄存器名功能含义
GPxMUXn复用功能寄存器 决定GPIO口是否复用。每2bit表示一个GPIO,故可取值00/01/10/11,即:0/1/2/3。0:关闭复用功能,当做普通IO口使用1/2/3:打开复用功能,对应具体复用功能,请查看数据手册

注意:n可以取值1 or 2
原因:mux为32位寄存器,每2bit表示一个GPIO,故一个mux寄存器只能表示16个GPIO口。而每组GPIO有32个GPIO,故要全部表示需要2个MUX寄存器,即:MUX1和MUX2MUX1:每组GPIO的前半部分,如:GPIO0 ~GPIO15MUX2:每组GPIO的后半部分,如:GPIO16
GPxDIRIO方向寄存器配置IO方向
0:输入
1:输出
GPAPUD是否上拉寄存器 0:上拉
1:不上拉
数据寄存器名功能含义
GPxDAT独立读写IO口寄存器 当IO方向为输入时为只读寄存器;
当IO方向为输出时,可以通过GPxSET设置该寄存器值
GPxSET置1寄存器写1有效,写0无效
GPxCLEAR清0寄存器写1有效,写0无效
GPxTOOGLE翻转寄存器写1有效,写0无效

请添加图片描述
请添加图片描述

三、结构体代码

为了实现需要了解GPIO的设置。
请添加图片描述

3.1、结构体变量:GpioCtrlRegs

#ifdef __cplusplus
#pragma 
http://www.lryc.cn/news/2413794.html

相关文章:

  • 网易163邮箱和网易126邮箱有什么区别?
  • ListView的优化
  • 基于Nexus3搭建Maven私服
  • C#中e.Cancel,e.Handled的区别与应用
  • 《异域狂想曲》官方秘籍
  • 沸点网络电视 v3.2 官方版
  • 《小强与小明》——正在疯传的伟大的故事
  • WorldView卫星家族简介
  • 北京大气污染PM2.5预测(LSTM)
  • 《安卓最佳免费应用》
  • Windows Hook 易核心编程(4) API Hook 续 拦截API
  • 非常全面的DolphinScheduler(海豚调度)安装使用文档
  • Redhat Linux 9/AS 3上安装清华紫光拼音输入法智能五笔全拼等
  • 网络速度变慢的常见23种解决方法
  • A start job is running for /etc/rc.d/rc.local ... ... no limit
  • 微云秒点七级图标。
  • 十六条超炫代码让你的QQ空间改头换面(转)
  • 应用本地数据库
  • 嗜血法医第一二三季/Dexter全集迅雷下载
  • 梦幻西游默认服务器怎么修改器,梦幻西游古龙服务端安装教程
  • vs2008在打了SP1补丁后编译版本不匹配,导致“应用程序配置不正确,应用程序未能启动
  • java移位操作_java 移位运算
  • 春节灯谜及答案
  • 探秘雀魂智能助手:majsoul_wrapper项目深度剖析
  • SQuirrel SQL Client数据库连接工具的配置与使用
  • 精品PHP实现的博客网站的设计与实现
  • android权限(permission)大全
  • 1kb病毒解决方案
  • u盘低级格式化数据怎么恢复,u盘低级格式化还能恢复吗
  • FBReader源码分析之序言篇