IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> DSP学习(一)GPIO操作 -> 正文阅读

[嵌入式]DSP学习(一)GPIO操作

00 建立开发版与仿真器的连接

打开文件TMS320F28335.ccxml
在这里插入图片描述
建立连接
在这里插入图片描述
显示下述信息说明连接成功
在这里插入图片描述

2 软件编程

1 系统时钟初始化

振荡器OSC和锁相环PLL初始化

在这里插入图片描述

在这里插入图片描述

注意:
在写PLLCR寄存器前,PLLSTS[DIVSEL]必须是0。

初始化函数

InitSysCtrl();
void InitSysCtrl(void)
{
    //
    // Disable the watchdog
    //
    DisableDog();

    //
    // Initialize the PLL control: PLLCR and DIVSEL
    // DSP28_PLLCR and DSP28_DIVSEL are defined in DSP2833x_Examples.h
    //
    InitPll(DSP28_PLLCR, DSP28_DIVSEL); // f=30M * DSP28_PLLCR / DSP28_DIVSEL  =100MHZ

    //
    // Initialize the peripheral clocks
    //
    InitPeripheralClocks(); //使能外设时钟
}

        // Optional: Wait for PLL to lock.
        // During this time the CPU will switch to OSCCLK/2 until
        // the PLL is stable.  Once the PLL is stable the CPU will
        // switch to the new PLL value.
        //
        // This time-to-lock is monitored by a PLL lock counter.
        //
        // Code is not required to sit and wait for the PLL to lock.
        // However, if the code does anything that is timing critical,
        // and requires the correct clock be locked, then it is best to
        // wait until this switching has completed.

//可选:等待PLL锁定。
//在此期间,CPU将切换至OSCCLK/2,直到
//锁相环是稳定的。一旦PLL稳定,CPU将
//切换到新的PLL值。
//
//锁定时间由PLL锁定计数器监控。
//
//代码不需要等待PLL锁定。
//但是,如果代码执行任何对时间至关重要的操作,
//并且需要锁定正确的时钟,那么最好
//等待此切换完成。

使能外设时钟

使能有关外设时钟的寄存器为PCLKCR0/1/3,GPIO初始化在PCLKCR3中
在这里插入图片描述

SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1; // GPIO input clock

2 初始化GPIO

On the 2833x devices, up to three independent peripheral signals are multiplexed on a single GPIO-enabled pin in addition to individual pin bit I/O capability. There are three 32-bit I/O ports. Port A consists of GPIO0-GPIO31, port B consists of GPIO32-GPIO63, and port C consists of GPIO64-87.
Figure 4-1 shows the basic modes of operation for the GPIO module.
在这里插入图片描述
初始化函数

    InitGpio();
void InitGpio(void)
{
    EALLOW;

    //
    // Each GPIO pin can be:
    // a) a GPIO input/output
    // b) peripheral function 1
    // c) peripheral function 2
    // d) peripheral function 3
    // By default, all are GPIO Inputs
    //
    GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO0-GPIO15
    GpioCtrlRegs.GPAMUX2.all = 0x0000; // GPIO functionality GPIO16-GPIO31
    GpioCtrlRegs.GPBMUX1.all = 0x0000; // GPIO functionality GPIO32-GPIO39
    GpioCtrlRegs.GPBMUX2.all = 0x0000; // GPIO functionality GPIO48-GPIO63
    GpioCtrlRegs.GPCMUX1.all = 0x0000; // GPIO functionality GPIO64-GPIO79
    GpioCtrlRegs.GPCMUX2.all = 0x0000; // GPIO functionality GPIO80-GPIO95

    GpioCtrlRegs.GPADIR.all = 0x0000; // GPIO0-GPIO31 are inputs
    GpioCtrlRegs.GPBDIR.all = 0x0000; // GPIO32-GPIO63 are inputs
    GpioCtrlRegs.GPCDIR.all = 0x0000; // GPI064-GPIO95 are inputs

    //
    // Each input can have different qualification
    // a) input synchronized to SYSCLKOUT
    // b) input qualified by a sampling window
    // c) input sent asynchronously (valid for peripheral inputs only)
    //
    GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15 Synch to SYSCLKOUT
    GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO16-GPIO31 Synch to SYSCLKOUT
    GpioCtrlRegs.GPBQSEL1.all = 0x0000; // GPIO32-GPIO39 Synch to SYSCLKOUT
    GpioCtrlRegs.GPBQSEL2.all = 0x0000; // GPIO48-GPIO63 Synch to SYSCLKOUT

    //
    // Pull-ups can be enabled or disabled
    //
    GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup's enabled GPIO0-GPIO31
    GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup's enabled GPIO32-GPIO63
    GpioCtrlRegs.GPCPUD.all = 0x0000; // Pullup's enabled GPIO64-GPIO79
    // GpioCtrlRegs.GPAPUD.all = 0xFFFF;    // Pullup's disabled GPIO0-GPIO31
    // GpioCtrlRegs.GPBPUD.all = 0xFFFF;    // Pullup's disabled GPIO32-GPIO34
    // GpioCtrlRegs.GPCPUD.all = 0xFFFF;    // Pullup's disabled GPIO64-GPIO79

    EDIS;
}

3 清除所有中断 和初始化 PIE 向量表

    DINT;          // 禁用CPU中断
    InitPieCtrl(); // 初始化 PIE 控制寄存器到默认状态,默认状态是全部 PIE 中断被禁用和标志位被清除
    IER = 0x0000;  // 禁用 CPU 中断和清除所有 CPU 中断标志位:
    IFR = 0x0000;
    InitPieVectTable(); // 初始化 PIE 中断向量表

4 添加用户具体代码

在这里插入图片描述

    LED_GPIO_Config(); // LED端口初始化
void LED_GPIO_Config(void)
{
    EALLOW;
    GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO0=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO0=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO1=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO1=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO1=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO2=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO2=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO3=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO3=1;//配置成输出

    GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;//普通IO模式
    GpioCtrlRegs.GPAPUD.bit.GPIO4=0;//使能内部上拉
    GpioCtrlRegs.GPADIR.bit.GPIO4=1;//配置成输出

    GpioDataRegs. GPASET.bit.GPIO0=1; //输出高电平
    GpioDataRegs. GPASET.bit.GPIO1=1; //输出高电平
    GpioDataRegs. GPASET.bit.GPIO2=1;
    GpioDataRegs. GPASET.bit.GPIO3=1;
    GpioDataRegs. GPASET.bit.GPIO4=1;
    EDIS;
}

输出高电平

GpioDataRegs. GPASET.bit.GPIO0 = 1; //输出高电平

输出低电平

GpioCtrlRegs.GPACLEAR.bit.GPIO0 = 1;

5 编写主循环

    while(1)
    {
        for ( i = 0; i < 5; i++)
        {
            GpioDataRegs.GPACLEAR.all = (0x01 << i);
            delay_1ms(1000);
            GpioDataRegs.GPASET.all = (0x01 << i);
            delay_1ms(1000);
        }
    }
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 00:28:41  更:2022-04-14 00:59:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:42:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码