一.DSP 28335学习之点灯

说明:下面的教程我是参考开发板提供的代码例子

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. 用户特定的代码
   
   GpioDataRegs.GPBDAT.all    =0x30000000;
   GpioDataRegs.GPCDAT.all    =0x00000007;
   for(;;)
   {   
       
       delay_loop();
       GpioDataRegs.GPBTOGGLE.all =0x30000000; 
       GpioDataRegs.GPCTOGGLE.all =0x00000007;
       
       delay_loop();

       GpioDataRegs.GPBTOGGLE.all =0x30000000; 
       GpioDataRegs.GPCTOGGLE.all =0x00000007;
    
    }

}     

Q1: 做一件事情得有步骤,我用DSP去点灯,我需要哪几个步骤 ?

答:

(1)系统初始化           //这一步肯定得有, 具体怎么配置。参考上面代码     。 

(2)配置GPIO        //重点是讲GPIO配置,下面会详细展开怎么配置

(3)关闭中断        //参考代码里面,有关闭中断操作。至于为啥要关闭,我猜测是用不到就关闭吧!

(3)主函数调用   //学习单片机的都知道

 

 

Q2: 配置GPIO其实就相当于操作寄存器。 DSP有这么多寄存器 。应该操作哪些寄存器?

答:DSP的寄存器非常多,GPIO相关的寄存器也不少。这里我们只需要点灯。操作几个重点GPIO相关寄存器即可,其它的相关GPIO寄存器保持默认即可。具体步骤如下。

(1)根据上面的代码:

    EALLOW;
    GpioCtrlRegs.GPAMUX1.all = 0x00000000;  // All GPIO
    GpioCtrlRegs.GPADIR.all = 0xFFFFFFFF;   // All outputs

    EDIS;

   GpioDataRegs.GPBTOGGLE.all

   因此操作GPAMUX1、GPADIR、GPBTOGGLE三个寄存器即可 。

1.GPAMUX1:  GPIO的多功能复用寄存器,这里点灯,写入00即可。    

00:通用的输入输出口

01:外设选择1

10:外设选择2

11:外设选择3

 

2.GPADIR: GPIO方向寄存器,GPIO共58个,每个寄存器有两种状态。详见P146-P147

0:配置GPIO作为输入

1:配置GPIO作为输出

 

3.GPBTOGGLE:翻转寄存器 。例如 GPATOGGLE.GPIOx = 1:强制设置端口电平反转。详见:P153-P155

0:无效

1:有效

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值