DSP6657 GPIO中断学习

news2024/11/18 6:41:38

1 简介

使用创龙板卡的KEY2按键通过中断的方式控制LED3的亮灭

2 中断学习

在C665x设备上,CPU中断是通过C66x CorePac中断控制器进行配置的。该中断控制器允许最多128个系统事件被编程到任意12个CPU可屏蔽中断输入(CPUINT4至CPUINT15)、CPU异常输入(EXCEP)或高级仿真逻辑中。这128个系统事件包括了内部生成的事件(在CorePac内)和芯片级事件。

此实验将事件91通过中断控制器连接到可屏蔽中断CPUINT12达到目的。

3 参考代码

main.c

#include <stdio.h>
/* Compiler Header files */
#include <stdint.h>
/* CSL Header file */
#include <ti/csl/csl_chipAux.h>
#include <ti/csl/src/intc/csl_intc.h>

/* Driver utilities include */
#include "driver/c66x_gpio.h"

#define PIN_CONTROL_0               0x02620580  //	GPIO控制寄存器基地址
#define LED1             GPIO_19
#define LED2             GPIO_22
#define LED3             GPIO_23
#define KEY2             GPIO_0



/* INTC Objects */
CSL_IntcObj                  gpioIntcObj;
CSL_IntcContext              context;
CSL_IntcEventHandlerRecord   EventHandler[30];


static void test_isr_handler (void *arg)
{
	printf("succeeded!\n");
	if (gpio_read_input(KEY2) == GPIO_LOW)//按键真的被按下了
	{
		if (gpio_read_input(LED3) == GPIO_LOW)		//LED3翻转
		gpio_set_output(LED3);//GPIO23设置为高电平,LED3熄灭
		else
		gpio_clear_output(LED3);//GPIO23设置为低电平,LED3点亮
	}
}

int Interrupts_Init(void)
{

	CSL_IntcGlobalEnableState   state;
    CSL_Status                  intStat;
    CSL_IntcEventHandlerRecord  EventRecord;
    CSL_IntcParam               vectId;
    CSL_IntcHandle              gpioIntcHandle;

    /* INTC module initialization */
	context.eventhandlerRecord = EventHandler;
	context.numEvtEntries      = 1 ;//中断个数
	if (CSL_intcInit(&context) != CSL_SOK)
		return -1;

	/* Enable NMIs */
	if (CSL_intcGlobalNmiEnable() != CSL_SOK)
		return -1;

	/* Enable global interrupts */
	intStat = CSL_intcGlobalEnable(&state);

    /* Open INTC */
	vectId = CSL_INTC_VECTID_12;//此处选择使用十二个可屏蔽中断
	gpioIntcHandle = CSL_intcOpen(&gpioIntcObj, CSL_GEM_GPINTN, &vectId, &intStat);//第二项参数为128个中断事件的某一个,此处为事件91
	if (gpioIntcHandle == NULL)
		return -1;

	/* Bind ISR to Interrupt */
	EventRecord.handler = (CSL_IntcEventHandler)&test_isr_handler;//此处关联中断处理函数
	EventRecord.arg     = gpioIntcHandle;
	CSL_intcPlugEventHandler(gpioIntcHandle, &EventRecord);

	/* Event Enable */
	CSL_intcHwControl(gpioIntcHandle, CSL_INTC_CMD_EVTENABLE, NULL);

	gpio_enable_global_interrupt();
	gpio_set_fallingedge_interrupt(KEY2);
	printf("interrupt init succeeded!\n");

	return 0;
}





//基于CPU周期的延迟函数,100000000=100ms
void cpu_delaycycles(uint32_t cycles) {
	uint32_t start_val;
	/* Start TCSL so its free running */
	CSL_chipWriteTSCL(0);
	start_val = CSL_chipReadTSCL();
	while ((CSL_chipReadTSCL() - start_val) < cycles)
		;
}




int main(void) {

	/* Set pin as GPIO mode */
	*((uint32_t *) PIN_CONTROL_0) |= ((1 << LED1)|
	(1 << LED2) |(1 << KEY2 ) |
	(1 << LED3));

	/* Set GPIO as output mode */
	gpio_set_direction(LED1, GPIO_OUT);
	gpio_set_direction(LED2, GPIO_OUT);
	gpio_set_direction(LED3, GPIO_OUT);
	gpio_set_direction(KEY2, GPIO_IN);

	Interrupts_Init();
	while (1) ;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1708121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机定制开发_基于天玑900的5G安卓手机定制方案

手机定制方案基于联发科天玑900强劲旗舰八核2.4GHz处理器。这款处理器采用了6nm先进制程工艺&#xff0c;为用户带来了痛快淋漓的性能体验。不论是进行游戏还是日常娱乐&#xff0c;用户都能轻松驾驭。手机搭载了最新的Android 13操作系统&#xff0c;提高了数据读取的准确性&a…

sklearn线性回归--岭回归

sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型&#xff0c;因此它的预测公式与普通最小二乘法相同。但在岭回归中&#xff0c;对系数&#xff08;w&#xff09;的选择不仅要在训练数据上得到好的预测结果&#xff0c;而且还要拟合附加约束&#xff0c;使系数尽量小…

【电源专题】功率电感啸叫对策及案例

在文章:【电源专题】功率电感器啸叫原因及典型案例 中我们了解到了电感器啸叫的原因和一些典型电路中产生电感啸叫的案例。通过案例我们了解到很多时候啸叫来源是DC-DC转换器的功率电感器,所以如果我们要降低或消除啸叫,那有哪些对策呢? 避免流过人耳可听频率电流 首先我们…

网络业务创新驱动下的DPU P4技术,中科驭数在网络开源技术生态大会上分享最新进展

2024年5月25日&#xff0c;由中国通信学会指导&#xff0c;中国通信学会开源技术专业委员会、江苏省未来网络创新研究院主办的第四届网络开源技术生态大会在北京举办&#xff0c;中科驭数产品总监李冬以《合作如兰&#xff0c;扬扬其香 中科驭数助力P4产业发展与生态建设》为主…

Java入门基础学习笔记49——ArrayList综合案例

ArrayList的综合案例-模仿外卖系统中的商家系统 需求&#xff1a; 完成菜品的上架、以及菜品信息浏览功能。 目标&#xff1a; 使用所学的ArrayList集合结合面向对象编程实现以上两个需求。 Food类&#xff1a; package cn.ensource.arraylist;public class Food {private …

iptables练习题

目录 练习题1. 显示当前的iptables规则2. 允许所有来自192.168.1.0/24的TCP流量到本机的22端口&#xff08;SSH&#xff09;3. 禁止所有来自10.0.0.0/8的ICMP流量4. 允许所有出站流量5. 拒绝所有来自外部的HTTP流量&#xff08;80端口&#xff0c;tcp协议&#xff09;6. 删除IN…

.NET周刊【5月第4期 2024-05-26】

国内文章 开源低代码框架 ReZero API 正式版本发布 &#xff0c;界面操作直接生成API https://www.cnblogs.com/sunkaixuan/p/18201175 ReZero是一款.NET6的中间件&#xff0c;采用MIT许可证开源&#xff0c;目的是降低.NET Core开发的门槛。它提供界面操作生成API的功能&am…

AI视频换脸!最快的方法,100%成功,完全免费,无需配置、打开即用

这是一款百分百完全免费&#xff0c;超级好用又简单的AI视频换脸工具&#xff0c;不仅效果非常不错而且支持CPU和GPU解码&#xff0c;即使电脑上没有独立显卡&#xff0c;你也可以通过电脑上的CPU要进解码&#xff0c;虽然我之前给他介绍好几个有关AI视频&#xff0c;比如像这个…

【全开源】酒店订单管理系统源码(FastAdmin+ThinkPHP)

一款基于FastAdminThinkPHP开发的旨在为民宿、酒店、宾馆等提供房态、订单、财务、客史等数据化、信息化的智慧管理工具&#xff0c;实现一站式订房管理&#xff0c;帮助酒店、民宿、宾馆提升管理效率&#xff0c;降低管理成本&#xff0c;提升行业竞争力。 打造高效、便捷的酒…

kafka-消费者组偏移量重置

文章目录 1、消费者组偏移量重置1.1、列出所有的消费者组1.2、查看 my_group1 组的详细信息1.3、获取 kafka-consumer-groups.sh 的帮助信息1.4、 偏移量重置1.5、再次查看 my_group1 组的详细信息 1、消费者组偏移量重置 1.1、列出所有的消费者组 [rootlocalhost ~]# kafka-…

5月28号总结

刷题记录 1.A. Phone Desktop 输入&#xff1a; 11 1 1 7 2 12 4 0 3 1 0 8 1 0 0 2 0 15 0 8 2 0 9 输出&#xff1a; 1 1 2 2 1 1 0 1 1 2 5 题意&#xff1a;题目给我们1x1和2x2的图标个数&#xff0c;让我们求最少需要多少个5x3的屏幕。 思路&#xff1a;当只看2x2的图…

短视频内容创意方法有哪些?成都科成博通文化传媒公司

短视频内容创意方法有哪些&#xff1f; 随着移动互联网的迅猛发展&#xff0c;短视频平台已成为人们日常生活中不可或缺的一部分。短视频以其短平快的特点&#xff0c;迅速吸引了大量用户。然而&#xff0c;面对海量的短视频内容&#xff0c;如何让自己的作品脱颖而出&#xf…

02 Prometheus入门安装教程

02 Prometheus入门安装教程 大家好&#xff0c;我是秋意零。今天分享一篇入门级Prometheus安装教程。 环境准备 三台Linux虚拟机&#xff08;一台也可以&#xff09; 准备Prometheus、相关组件安装包 Prometheus官网下载安装包比较慢&#xff0c;如果没有魔法。可关注公众号…

打包软件注意

1.建个文件夹D:333 /Dalsa_Cameras /cam1 cam2 2. 3.缺的包 4.自动启动.exe exe快捷方式放一起

头文件大小写引发的报错

jenkins下打包编译报错如下&#xff0c;提示编译zynqCan.c时找不到“syscfgpll/sysCfgpll.h”文件。 但IDE下编译是没有报错也没有警告的&#xff0c;工程中也存在文件“syscfgpll/sysCfgPll.h”。 仔细观察发现&#xff0c;报错说的是找不到头文件“syscfgpll/sysCfgpll.h”…

从 0 手撸一个 pytorch

背景介绍 最近抽空看了下 Andrej Karpathy 的视频教程 building micrograd&#xff0c;教程的质量很高。教程不需要任何前置机器学习基础&#xff0c;只需要有高中水平的数学基础即可。整个教程从 0 到 1 手撸了一个类 pytorch 的机器学习库 micrograd&#xff0c;核心代码不到…

关于VFX Graph的学习

关于VFX Graph的学习 转载自我的有道云笔记&#xff0c;目前内容不多&#xff0c;后续如果继续使用会更新。 前言 出于实习工作需要和毕设需要&#xff0c;我开始使用VFXGraph。 以前准备第一批作品集的时候&#xff0c;就简单地使用过&#xff0c;但是只是跟着教程一顿乱连…

PENDLE会是打响LSDFI赛道的第一枪吗?以bitget钱包为例

Pendle Finance是什么? PENDLE是Pendle Finance的原生通证&#xff0c;因此&#xff0c;在介绍Pendle币之前&#xff0c;我们需要对Pendle Finance有一个简单的了解。、 Pendle是一个建立在以太坊区块链上的无需许可的去中心化金融&#xff08;DeFi&#xff09;协议&#xff…

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京&#xff0c;作为一座历史悠久的文化名城&#xff0c;早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今&#xff0c;这座古老而又年轻的城市&#xff0c;正以其卓越的科技实力和创新精神&#xff0c;成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

打造高质感的电子画册,这篇文章告诉你

​在数字化时代&#xff0c;电子画册作为一种全新的视觉传达方式&#xff0c;正逐渐成为各行各业展示形象、传播信息的重要工具。相较于传统的纸质画册&#xff0c;电子画册具有更高的质感、更好的互动性以及更低的制作成本&#xff0c;使得它愈发受到众多企业的青睐。那样怎么…