DSP_28335_GPIO初始化_源码详解_CCS6

软件版本为CCS6.1.3

初始化GPIO68为普通IO口,反转输出电平,实现led闪烁的效果

F28335的GPIO 占用了芯片大部分的引脚,共达 88 个,分为了 3 组

A 组: GPIO0-GPIO31,32个

B 组:GPIO32-GPIO63,32个

C 组:GPIO64-GPIO87,24个

只有AB端口具有数字滤波的功能,GPIO输入可以通过量化寄存器 GPxQUAL 对输入信号进行量化限制,从而可以消除数字量IO引脚的噪声干扰。在限制选择器(GPAQSEL1、GPAQSEL2、GPBQSEL1 和 GPBQSEL2)中信号采样次数被指定为 3 个采样、6 个采样或是不采样,当输入信号在经过 3 个或 6 个采样周期都保持一致时,输入信号才被认为是个有效信号,否则保持原来的状态不变。

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

#include "leds.h"

包含头文件。。。。。。

与stm32一样,头文件除在代码中申明,其路径还需在软件设置中包括

右击工程

 选择最下方“Properties”    属性,然后

 在绿色框中添加头文件路径

主函数

void main()
{
	InitSysCtrl();    //关闭看门狗,确定系统主频
	LED_Init();       //初始化GPIO
	while(1)
	{
		LED1_TOGGLE;  //反转输出电平
		delay();      //延时
	}
}

DisableDog();关狗

InitPll(DSP28_PLLCR,DSP28_DIVSEL); 确定外部输入时钟的倍频系数和分频系数

外部输入30MHz,10倍频再2分频为150NHz

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);

   // Initialize the peripheral clocks
   //InitPeripheralClocks();
}

禁止InitPeripheralClocks();因为此函数使能了所有外设的时钟,我觉得还是像32一样用一个使能一个的好,全部使能后芯片明显有温度。。。

void LED_Init(void)
{
	EALLOW;    //关闭写保护
	SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;// 开启GPIO时钟
	//LED1端口配置
	GpioCtrlRegs.GPCMUX1.bit.GPIO68=0;//设置为通用GPIO功能
	GpioCtrlRegs.GPCDIR.bit.GPIO68=1;//设置GPIO方向为输出
	GpioCtrlRegs.GPCPUD.bit.GPIO68=0;//使能GPIO上拉电阻
    GpioDataRegs.GPCSET.bit.GPIO68=1;
	EDIS;    //开启写保护
}

GpioCtrlRegs.GPCMUX1.bit.GPIOn=xx;

xx=0,GPIO功能;xx=1,外设1;xx=2,外设2;xx=3,外设3;

为什么是“GPCMUX1”?这个“MUX1”是什么的缩写?

GPnMUX1和GPnMUX2分别对应16个IO

 GpioCtrlRegs.GPCDIR.bit.GPIOn=xx;                       0输入    1输出

GpioCtrlRegs.GPCPUD.bit.GPIOn=xx;          0使能上拉电阻    1禁止上拉电阻 

GpioDataRegs.GPCSET.bit.GPIO68=1;        GPIO68置高电平 

LED1_TOGGLE;就是将翻转寄存器(个人解读)置1使其作用

 delay();是一个for循环延时。。。。。。

最后说明,

配置GPIO为输出模式,要控制输出电平有两种方式

1、修改GPxDAT的值         

2、修改GPxSET、GPxCLEAR的值 

但是在使用GPxDAT连续给两个或两个以上IO口赋值时,会出现第一个或者前几个赋值无效的情况。详解

建议使用GPxSET/GPxCLEAR/GPxTOGGLE,不会出现上述问题

小白一个,有错还请指正

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]提供了一个关于DSP6678的GPIO初始化函数的代码片段。这段代码使用了DSP6678的寄存器来配置GPIO的功能、方向和上拉电阻,并将GPIO68设置为输出并输出高电平。 引用\[2\]提供了一些关于DSP6678的GPIO硬件初始化的信息。其中包括GPIO的工作频率、EDMA和中断的事件处理、GPIO与多核心的绑定关系以及MMR内存映射寄存器的控制等。 引用\[3\]提供了一些关于DSP6678的硬件调试的注意事项,包括使用风扇和散热器来降低功耗和发热,以及使用硬件追踪分析器来调试算法等。 综上所述,如果你想进行DSP6678的GPIO接口开发,你可以使用引用\[1\]中的代码片段来初始化GPIO,并参考引用\[2\]中的信息来了解GPIO的硬件初始化和控制方式。同时,你也需要注意引用\[3\]中提到的硬件调试的注意事项。 #### 引用[.reference_title] - *1* [DSP_28335_GPIO初始化_源码详解_CCS6](https://blog.csdn.net/zyc18700766982/article/details/126814250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【DSP】【第二篇】了解C6678和创建工程](https://blog.csdn.net/Kshine2017/article/details/125310445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值