【6678专题】-点亮LED灯(寄存器方式)

2024-08-29 16:36

本文主要是介绍【6678专题】-点亮LED灯(寄存器方式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本章需要参考的资料为
General Purpose Input Output (GPIO) User Guide.pdf》,具体在创龙资料文件夹目录下D:\JYTL\12DSP_FPGA\08_文档\创龙\TL6678ZH-EVM_V1.5\TL6678ZH-EVM_V1.5\6-开发参考资料\数据手册\核心板元器件\DSP\Technical Reference Manual
Multicore Fixed and Floating-Point Digital Signal Processor》,即TMS320C6678的数据手册

6678的GPIO寄存器操作

  • GPIO Registers
  • 参考代码
  • 工程文件

GPIO Registers

在这里插入图片描述
上表中给出的是偏移地址,那么是在哪个地址上偏移的呢?这个需要查找上面的第二个手册:
在这里插入图片描述

首先看下关于GPIO的寄存器,如上表所示
在这里插入图片描述
上述内容同样来源于手册,简单分析可知:
DIR :方向控制寄存器 0表示设置为输出;1表示设置为输入
OUT_DATA:输出数据寄存器
SET_DATA:将数据对应bit直接置1
CLR_DATA:将数据对应bit设置为0
IN_DATA:输入数据寄存器
我们分析一下数据手册中的说明,针对OUT_DATASET_DATACLR_DATA;这几个寄存器都是针对输出而言,如果方向设置为输入,那么操作这几个寄存器是没有用的。
SET_DATACLR_DATA这两个寄存器,只支持往里面写1;如果写0则无效;

参考代码

/** main.c*/
#include <stdio.h>#include <c6x.h>
/* CSL Header file */
#include <ti/csl/cslr_device.h>
#include <ti/csl/csl_pscAux.h>/* Platform utilities include */
#include "system/platform.h"/* Driver utilities include */
#include "driver/c66x_uart.h"/*user define*/
#define GPIO_DIR        0x02320010
#define GPIO_OUT_DATA   0x02320014
#define GPIO_SET_DATA   0x02320018
#define GPIO_CLR_DATA   0x0232001C
#define GPIO_IN_DATA    0x02320020
#define GPIO_NUM        4
/*operation on pointor*/
#define ACCESS(addr)   *((unsigned int*)addr)/*** @brief enable psc module** @param void** @return NULL*/
void psc_init()
{/* Set psc as Always on state */CSL_PSC_enablePowerDomain(CSL_PSC_PD_ALWAYSON);/* Start state change */CSL_PSC_startStateTransition(CSL_PSC_PD_ALWAYSON);/* Wait until the status change is completed */while(!CSL_PSC_isStateTransitionDone(CSL_PSC_PD_ALWAYSON));
}void gpio_init()
{/*set direction output*/ACCESS(GPIO_DIR) &= ~(1<<4);/*set output level*/ACCESS(GPIO_SET_DATA) |= (1<<4);
}int main(void) {int i = 0;uint32_t main_pll_freq;
//    uint8_t buf = 0;char tips_strings[] = {"\r\ntl-uart-echo Application\r\n"};/* Enable the PSC */psc_init();/* UART initialization */uart_init(CSL_UART_REGS);/*GPIO initialization*/gpio_init();/* Get the cpu freq */main_pll_freq = platform_get_main_pll_freq();/* Set the default baud rate to 115200 *//** CPU frequency = main pll out* uart input clock = main pll out / 6*/uart_set_baudrate(CSL_UART_REGS, main_pll_freq/6, 115200);uart_printf("%s", (char *)tips_strings);int coreID = DNUM;printf("hello world from core %d\n",coreID);while(1){while(i++ < 3);ACCESS(GPIO_SET_DATA) |= (1<<4);i = 0;while(i++ < 3);ACCESS(GPIO_CLR_DATA) |= (1<<4);i = 0;}return 0;
}

工程文件

这篇关于【6678专题】-点亮LED灯(寄存器方式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118384

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注