一.DSP 28335学习之点灯_gpatoggle_书虚浮的博客-程序员秘密

技术标签: DSP  

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

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:有效

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37445354/article/details/106457714

智能推荐

spring boot要如何学习?_时间-的博客-程序员秘密

作者:码云 Gitee链接:https://www.zhihu.com/question/53729800/answer/255785661来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。推荐以 Spring Boot 教程与 Spring Cloud 教程的详细开源项目 “SpringBoot-Learning” 此项目内容为 Spring Boot 教程程序样例,...

gcc: fatal error: no input files_水煮胡萝卜的博客-程序员秘密

错误的使用:[[email protected] tacacs+-F4.0.4.26]# gccgcc: fatal error: no input filescompilation terminated.[[email protected] tacacs+-F4.0.4.26]#正确的示范:[[email protected] tacacs+-F4.0.4.26]# gcc --versi...

Repository和Registry区别_ZhiYuanYe的博客-程序员秘密

Repository:本身是一个仓库,这个仓库里面可以放具体的镜像,是指具体的某个镜像的仓库,比如Tomcat下面有很多个版本的镜像,它们共同组成了Tomcat的Repository。Registry:镜像的仓库,比如Docker Hub,Registry上有很多的Repository,Redis、Tomcat、MySQL等等Repository组成了Registry。按照Docker的logo来看

Qt编写可视化大屏电子看板系统23-模块1产量汇总_大屏看板 产量_feiyangqingyun的博客-程序员秘密

一、前言大屏系统采用结构模块化的分层设计思路,一个表对应一个最小模块比如模具产量、零件产量,数据库采集的时候采集对应的表,拿到数据后按照对应的数据规则传给控件绘制,其中模具产量、零件产量两个模块采用横向分组图的形式展示,每月模具产量趋势图、每月零件产量趋势图采用折线图来展示,两种图形组件都采用QCustomplot图表控件特殊定制而来,其中横向分组图隐藏横坐标,纵坐标显示对应的分组名称,折线图不同曲线不同颜色显示,折线图的横坐标是月份,纵坐标是对应的数据,为了方便用户观看,还增加了定位线突出显示,比如定位

MATLAB数字图像处理小系统 【带GUI界面,源码实现】_yl624624的博客-程序员秘密

MATLAB数字图像处理小系统【带GUI界面,源码实现】目 录实验一、数字图像获取和格式转换 2实验二、图像亮度变换和空间滤波 6实验三、频域处理 7实验四、图像复原 9实验五、彩色图像处理 10...

注意Pytorch中GPU与CPU的使用_Robert--cao的博客-程序员秘密

其实在Pytorch中并不是在任何情况下把数据放到GPU下就能训练效率,减少训练时间。下面举个例子:import torchimport timeprint(torch.cuda.is_available())print(torch.cuda.current_device())###CPUstart_time = time.time()a = torch.ones(...

随便推点

统计文件中某个单词出现的次数_impressed的博客-程序员秘密

统计file文件中单词good的个数1、awk 'BEGIN {num=0} {i=1;while(i2、awk -v RS='\\' 'END {print --NR}' file3、sed  's/[^a-zA-Z]/\n/g' file |sort |uniq -c |grep good4、tr -s "\t| " "\n" 5、sed 's/\t/\n/g;s/ /\n

uniapp中将时间戳转换为日期格式_uni 时间戳转日期_帅气的小丑i的博客-程序员秘密

使用过滤器方法:filters: {formatDate: function (value) {let date = new Date(value);let y = date.getFullYear();let MM = date.getMonth() + 1;MM = MM < 10 ? (‘0’ + MM) : MM;let d = date.getDate();d = d < 10 ? (‘0’ + d) : d;let h = date.getHours();h =

基于双叠加模型和pm谱的海浪模拟_利用海浪谱,使用双叠加模型生成随机海面_foodieanan的博客-程序员秘密

双叠加模型:pm谱:基于以上双叠加模型和pm谱的分析,做出如下改进:1、波幅:采用基于海浪谱的等分能量法求波幅。2、波数:由线性波动理论 , 波数 k 和圆频率 w 满足色散关系,即:其中 g 为重力加速度 , D 为水深 , 当水深 D 大于波长的一半时 , k = w 2 /g 。3、方向角:方向角θ显示了

Chemical Science | 通过异构网络中的深度学习对已知药物进行靶标识别_异构网络 深度学习_DrugAI的博客-程序员秘密

作者 | 钟玥单位 | 厦门大学研究方向 | 生物序列分析今天给大家介绍的是2020年1月在Chemical Science上发表的论文“Target identification am...

DeepFM:深度学习算法助力华为应用市场APP推荐_mishidemudong的博客-程序员秘密

今年8月下旬,在澳大利亚墨尔本召开的IJCAI2017会议上,来自华为伏羲推荐团队的专家发表了他们在深度学习推荐算法方面的最新成果。伏羲推荐引擎是华为应用市场联合华为诺亚方舟实验室开发的一款推荐系统。针对华为应用市场的业务特点和数据特征,伏羲推荐算法团队提出的端到端的深度学习推荐模型DeepFM,助力华为应用市场更加精准、个性化的推荐体验。华为诺亚方舟实验室算法专家在IJCAI2017

/etc/init.d/php-fpm,解决 /etc/init.d/php-fpm no such file or directory等相关问题_三言两个菜的博客-程序员秘密

vi /etc/init.d/php-fpm#! /bin/sh# Comments to support chkconfig on CentOS# chkconfig: 2345 65 37#set -ePATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDESC="php-fpm daemon"NAME=php-fp...