1.建立工程
2.连接芯片,测试是否连接
3.需要用到的文件展示 !
4. 在工程里面新建一个文件夹,来存储数据,(.c 文件 .asm 文件)
5.添加文件到 文件夹里面去
6.在新建的文件夹里面 ,添加主函数 main.c 文件
7.手动添加头文件
8.添加的文件夹名字
这个资源我放在我的资源里面了! (V101)
9.开始的时候测试 配置是否成功!
完整的目录:
代码很少 自己打!
写在 main.c 里面
10.LED 闪烁的代码:
- /*
- * main.c
- *
- * Created on: 2022年9月14日
- * Author: she001
- */
- //###########################################################################
- //
- // FILE: Example1_2833xGpioLED.c
- //
- // TITLE: 用DSP点亮发光二极管实验
- //
- //
- // 根据在RAM中调试的需要,这个项目配置成"boot to SARAM".2833x引导模式
- // 表如下显示. 常用的还有"boot to Flash"模式,当程序在RAM调试完善后就
- // 可以将代码烧进Flash中并使用"boot to Flash"引导模式.
- //
- // $Boot_Table:
- //
- // GPIO87 GPIO86 GPIO85 GPIO84
- // XA15 XA14 XA13 XA12
- // PU PU PU PU
- // ==========================================
- // 1 1 1 1 Jump to Flash
- // 1 1 1 0 SCI-A boot
- // 1 1 0 1 SPI-A boot
- // 1 1 0 0 I2C-A boot
- // 1 0 1 1 eCAN-A boot
- // 1 0 1 0 McBSP-A boot
- // 1 0 0 1 Jump to XINTF x16
- // 1 0 0 0 Jump to XINTF x32
- // 0 1 1 1 Jump to OTP
- // 0 1 1 0 Parallel GPIO I/O boot
- // 0 1 0 1 Parallel XINTF boot
- // 0 1 0 0 Jump to SARAM <- "boot to SARAM"
- // 0 0 1 1 Branch to check boot mode
- // 0 0 1 0 Boot to flash, bypass ADC cal
- // 0 0 0 1 Boot to SARAM, bypass ADC cal
- // 0 0 0 0 Boot to SCI-A, bypass ADC cal
- // Boot_Table_End$
- //
- // 功能描述:
- //
- // 程序编译下载成功后,运行程序时LED灯组会一直闪烁
- //
- //
- //###########################################################################
- // 释放日期: 2016.8.2
- //###########################################################################
-
- #include "DSP2833x_Device.h" // DSP2833x 头文件
- #include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件
-
-
-
- // 使用前,声明本文件中的相关函数;
- void delay_loop(void);
- void Gpio_select(void);
-
- void main(void)
- {
-
- // 步骤 1. 初始化系统控制:
- // 设置PLL, WatchDog, 使能外设时钟
- // 下面这个函数可以从DSP2833x_SysCtrl.c文件中找到..
- InitSysCtrl();
-
- // 步骤 2. 初始化通用输入输出多路复用器GPIO:
- // 这个函数在DSP2833x_Gpio.c源文件中被定义了
- // 这个函数使GPIO控制类寄存器初始化到默认状态
- // InitGpio(); // 本例不用此子函数
-
- // 本例使用下面的GPIO配置
- Gpio_select();
-
- // 步骤 3. 清除所有中断初始化中断向量表:
- // 禁止CPU全局中断
- DINT;
-
- // 初始化PIE控制寄存器到他们的默认状态.
- // 这个默认状态就是禁止PIE中断及清除所有PIE中断标志
- // 这个函数放在DSP2833x_PieCtrl.c源文件里
- InitPieCtrl();
-
- // 禁止CPU中断和清除所有CPU中断标志
- IER = 0x0000;
- IFR = 0x0000;
-
-
- //初始化PIE中断向量表,并使其指向中断服务子程序(ISR)
- // 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中
- // 这个函数放在了DSP2833x_PieVect.c源文件里面.
- InitPieVectTable();
-
-
- // 步骤 4. 初始化片内外设:
- // 这个函数可以在DSP280x_CpuTimers.c源文件中找到
- // InitCpuTimers(); // 这个例子仅初始化了Cpu定时器
-
- // 步骤 5. 用户特定的代码
-
-
- for(;;)
- {
-
-
- GpioDataRegs.GPATOGGLE.bit.GPIO6= 1;// GPIO06翻转
- delay_loop();
- GpioDataRegs.GPATOGGLE.bit.GPIO6= 1;// GPIO06翻转
- delay_loop();
-
-
- GpioDataRegs.GPATOGGLE.bit.GPIO7= 1;// GPIO07翻转
- delay_loop();
- GpioDataRegs.GPATOGGLE.bit.GPIO7= 1;// GPIO07翻转
- delay_loop();
-
-
-
- }
-
-
-
- }
- //延迟子函数
- void delay_loop()
- {
- Uint32 i;
- Uint32 j;
- for(i=0;i<32;i++)
- for (j = 0; j < 100000; j++) {}
- }
- //GPIO初始化函数
- void Gpio_select(void)
- {
-
-
- EALLOW;
- GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 00; // GPIO6为GPIO功能
- GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // GPIO6为输出功能
-
- GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 00; // GPIO7为GPIO功能
- GpioCtrlRegs.GPADIR.bit.GPIO7 = 1; // GPIO7为输出功能
- EDIS;
- GpioDataRegs.GPATOGGLE.bit.GPIO6= 1;// GPIO06翻转 开始的时候为1 led 灯关闭
-
- GpioDataRegs.GPATOGGLE.bit.GPIO7= 1;// GPIO07翻转 开始的时候为1 led 灯关闭
-
-
- }
- //===========================================================================
- // No more.
- //===========================================================================
-
-
-
-
-
11.课程知识
1.首先所有的引脚 ,都可以借鉴别人写的文件,直接使用
2.课程知识!
GPIO
通用目的I/O模块(GPIO模块)内部配有复杂逻辑多路开关控制电路和复用寄存器,将数字I/O(GPIO)引脚、片上所有外设输入输出引脚、外部接口(XINTF)地址总线、数据总线、控制总线引脚在器件封装引脚上实现复用。
共88个GPIO,通过寄存器GPIOxMUX(x=A,B,C)进行设置。
GPIO分为3组,A端口对应引脚GPIO0~GPIO31(32位),
B端口对应引脚GPIO32~GPIO63(32位),
C端口对应引脚GPIO64~GPIO74(24位)。
当被配置为数字输入引脚时,具有输入滤波功能,通过GPIOSEL资格寄存器设定采样窗口宽度,对输入电平的干扰脉冲进行滤波。外部中断输入引脚XINT1~XINT7、不可屏蔽中断输入引脚XNMI是可编程的GPIO复用引脚。
- void LED_Init(void)
- {
- EALLOW;//关闭写保护
- SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; // 开启GPIO时钟
-
- //LED1端口配置
- GpioCtrlRegs.GPCMUX1.bit.GPIO68=0;//设置为通用GPIO功能 0-通用输出 1-外设1输出 2-外设2输出 3-外设3输出
- GpioCtrlRegs.GPCDIR.bit.GPIO68=1;//设置GPIO方向为输出 1-输出 0-输入
- GpioCtrlRegs.GPCPUD.bit.GPIO68=0;//使能GPIO上拉电阻 0-使能上拉 1-禁止上拉
-
- GpioDataRegs.GPCSET.bit.GPIO68=1;//设置GPIO输出高电平
- //GpioDataRegs.GPCCLEAR.bit.GPIO68 = 1; //设置GPIO输出为低电平
-
- EDIS;//开启写保护
- }
F28335有三种32位的I/O口,依次
1 PORTA(GPIO0-GPIO31),
2 PORTB(GPIO32-GPIO63),
3 PORTC(GPIO64-GPIO87)
这些口都可以配置为普通的数字IO口同样也能被配置为外部接口。
这样涉及到了IO的寄存器,IO口共有三类寄存器:
控制寄存器、数据寄存器和中断控制寄存器。
1、 GPIO可以配置为数字I/O或外设I/O口,GPxMUX1(2):‘0’为数字I/O,‘1’为外设I/O口;
2: GPIO可以配置为内部电阻上拉功能,GPxPUD:‘0’为上拉,‘1’为禁止上拉
3: GPIO具有数字滤波功能,GPxQSEL1(2):量化输入寄存器,可以确定是3周期采样
还是6周期采样或者不用采样;
GPIO可以配置为内部电阻上拉功能,GPxPUD:‘0’为上拉,‘1’为禁止上拉,
4、 输入输出可配置,GPxDIR是控制每个引脚的输入或是输出,‘0’是输入,‘1’是输出;
当GPIO配置为数字I/O时注意:
1)28335引脚作为输出时,虽然可以通过设置GPADAT或GPBDAT改变输出端口的高低电平,但是单独写某一位时可能会使其它引脚产生误操作。为了避免这种现象的产生,改变输出引脚的高低电平时,应该使用
GPIOxSET(置位)
例子: GpioDataRegs.GPCSET.bit.GPIO68=1;//设置GPIO输出高电平
GPIOxCLEAR(清零)
例子: GpioDataRegs.GPCCLEAR.bit.GPIO68 = 1; //设置GPIO输出为低电平
,GPIOxTOGGLE(反向,可以代替去翻操作)
例子:GpioDataRegs.GPATOGGLE.bit.GPIO6= 1;// GPIO06翻转
寄存器载入输出锁存寄存,GPIOxDIR配置方向,1为输出,0为输入.
例子:GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // GPIO6为输出功能
2)当使用GPADAT的时候,一般是在初始化中,在函数中使用需要添加延时,否则可能达不到预定的输出状态。使用GPIOxSET(置位),GPIOxCLEAR(清零),GPIOxTOGGLE(反向)电平会立即变化,无需添加延时。
GPIOxSET, GPIOxCLEAR, GPIOxTOGGLE仅仅等于1时才有效,等于0无效