DSP6657 GPIO中断学习

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring:事务

1. 简介 spring对jdbc进行封装&#xff0c;简化对数据库的操作 2. HelloWorld 1. 搭建模块 2.加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency><groupId>org.springframework</groupId><artifactId>s…

5.28OpenMV入门

10分钟快速上手 OpenMV中文入门教程 使用的元件 先安装好&#xff0c;上述链接上手 IDE显示颜色阈值&#xff0c;同时也配有示例文件&#xff0c;如下图打开&#xff0c;helloworld 你好&#xff0c;世界&#xff01; OpenMV中文入门教程&#xff0c;在官方也有每一个的详细…

那智不二越机器人维修案例分享

那智不二越工业机器人在工业范围内广泛应用于各种生产领域。其示教器作为人机交互的重要设备&#xff0c;常常需要定期维护和Nachi不二越机械手示教盒修理。 【Nachi不二越机器人示教器维修步骤】 1. 关闭电源 在进行任何那智不二越机器人维修操作之前&#xff0c;务必确保机器…

黑马es0-1实现自动补全功能

1、安装分词器 上github上找人做好的分词器&#xff0c;放到es-plugin数据卷里&#xff0c;然后重启es即可 2、自定义分词器 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 …

如何开启tomcat管理功能

1 、修改conf/tomcat-users.xml <role rolename"manager-gui"/> <user username"tomcat" password"tomcat" roles"manager-gui"/>2、修改webapps/manager/META-INF/context.xml <Valve className"org.apache.cata…

【aI】LiveKit Agents Playground

demo 是跑在 playground中的。 语音助手demo 可以语音对话 概念 Concepts Agent: A function that defines the workflow of a programmable, server-side participant. This is your application code. Worker: A container process responsible for managing job queuing …

Spring Boot中@Value加载配置的替代者:@ConfigurationProperties

Value注解Spring Boot开发者都已经熟悉了&#xff0c;通过该注解&#xff0c;我们可以快速的把配置信息加载到Spring的Bean中。 例如&#xff1a;在application.yml中添加了一个配置如下&#xff1a; 我想在service中获取name&#xff0c;通过value注解方式实现&#xff0c;代…

【Python-OS】os.path.splitext()

作用&#xff1a;将文件路径分割成文件名和扩展名两部分。 slide_id, _ os.path.splitext(slide) print("slide:") print(slide) print("slide_id:") print(slide_id)注&#xff1a; slide是文件名&#xff0c;可以自行赋值

配置物联网平台 保姆级教程

一、云平台配置&#xff08;我们这里使用阿里云&#xff09; 1、注册和登录 &#xff08;1&#xff09;找到云平台官网&#xff0c;点击右上角的注册登录&#xff0c;完成之后&#xff0c;进行实名认证&#xff0c;任选一种认证方式。 ​​​​​​​ 2、实例的开通和创建 …

使用uniapp编写的微信小程序进行分包

简介&#xff1a; 由于小程序发布的时候每个包最多只能放置2MB的东西&#xff0c;所以把所有的代码资源都放置在一个主包当中不显示&#xff0c;所以就需要进行合理分包&#xff0c;&#xff0c;但是分包后整个小程序最终不能超过20MB。 一般情况下&#xff0c;我习惯将tabba…

node_相关知识点

Node.js采用谷歌的V8引擎&#xff0c;是一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境&#xff0c;可优化应用程序的传输量和规模。传统服务器多线程&#xff08;一个请求一个线程&#xff09;易阻塞。 一、线程、进程&#xff1a; 进程&#xff1a;进程负责…

go webview/wails学习记录

文章目录 webview安装基础代码错误情况wails安装初始化一个项目错误信息使用arco-design(在初始化项目上修改代码)修改窗口图标多页面展示添加自定义图标-iconfont制作伸缩侧边栏侧边栏菜单在form中使用select且select联动选择使用go读取本地excel文件在转json_str使用go将json…

js之图片上传

话不多说&#xff0c;直接上干货&#xff0c;注释在代码里面 下面是效果图和代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

FJSP:蛇优化算法SO求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

iOS--工厂设计模式

iOS--工厂设计模式 设计模式的概念和意义类族模式UIButton作为类族模式的例子总结 三种工厂设计模式简单工厂模式&#xff08;Simple Factory Pattern&#xff09;&#xff1a;代码实例 工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff1a;代码实例 抽象工…

exe4j --实现把jar包打成exe可执行文件

工具准备 1.Java编辑器&#xff0c;如&#xff1a;idea、eclipse等&#xff0c;下载地址&#xff1a; IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains https://www.jetbrains.com/idea/ 2.exe4j&#xff0c;下载地址&#xff1a; ej-technologies - Java A…

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…

ubuntu22.04安装调节显示器亮度工具

1 介绍 软件名叫 DDC/CI control&#xff0c;官网 2 安装方法 sudo apt install intltool i2c-tools libxml2-dev libpci-dev libgtk2.0-dev liblzma-dev3 效果 进入软件&#xff0c;忽略告警信息

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下&#xff0c;家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序&#xff0c;作为一种新型的线上服务平台&#xff0c;不仅能够提升家政公司的服务效率&#xff0c;还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

电脑无法远程桌面连接,关于电脑无法建立远程桌面连接的问题分析与解决方案

在信息化快速发展的今天&#xff0c;远程桌面连接已成为许多企业和个人用户进行远程办公、技术支持以及数据管理的必备工具。然而&#xff0c;当电脑无法建立远程桌面连接时&#xff0c;可能会对用户的工作和日常生活造成极大的不便。本文将深入分析电脑无法远程桌面连接的原因…