用龙芯1c库在裸机编程中实现外部中断(GPIO中断、按键中断)
来源:互联网 发布:js数组指定位置替换 编辑:程序博客网 时间:2024/06/05 14:53
龙芯1c库是为龙芯1c单片机封装的常用外设接口集合,类似于STM32库。不仅可以用于裸机编程,还可以和实时系统(比如RT-Thread等)配合使用。这里就是讨论如何龙芯1c库实现外部中断(GPIO中断、按键中断)。龙芯1c库的完整的代码在https://gitee.com/caogos/OpenLoongsonLib1c
测试用的硬件
实物图
电路图
测试用的按键为S3,所在引脚位GPIO85/I2C_SDA0
测试的主要思路和主要代码
用一个变量对按下次数进行计数,按键被按下时,串口将计数值打印出来。整个思路很简单,代码也很简单,主要代码如下
// 按键中断的标志volatile int gpio_key_irq_flag = 0;/* * 按键中断的处理函数 * @IRQn 中断号 * @param 传递给中断处理函数的参数 */void test_gpio_key_irqhandler(int IRQn, void *param){ gpio_key_irq_flag = 1;}/* * 测试库中外部中断(gpio中断,按键中断)的相关接口 * 按键被按下后,会产生一个中断 */void test_gpio_key_irq(void){ unsigned int key_gpio = 85; // GPIO85/I2C_SDA0 int key_irq = LS1C_GPIO_TO_IRQ(key_gpio); static int count = 0; // 初始化按键中断 gpio_init(key_gpio, gpio_mode_input); gpio_set_irq_type(key_gpio, IRQ_TYPE_LEVEL_LOW);// gpio_set_irq_type(key_gpio, IRQ_TYPE_EDGE_FALLING); // 当设为下降沿触发时,按下和弹起都会产生一次中断,理论上不应该这样,暂不知原因,改为低电平触发一切正常 irq_install(key_irq, test_gpio_key_irqhandler, NULL); irq_enable(key_irq); while (1) { if (1 == gpio_key_irq_flag) { delay_ms(10); // 延时10ms,消抖 gpio_key_irq_flag = 0; // 清标志 count++; // 计数器加一 myprintf("[%s] count=%d, key press\r\n", __FUNCTION__, count); } }}代码不难,简单描述一下就是,先调用gpio_init()将相应gpio设为输入模式,然后调用gpio_set_irq_type()设置中断为低电平触发,再调用irq_install()设置中断处理函数为test_gpio_key_irqhandler(),最后调用irq_enable()使能中断。注意中断号不是gpio编号,需要一个用宏LS1C_GPIO_TO_IRQ()转换一下。
更多更完整的代码,请移步到git查看。
测试结果
串口打印
阅读全文
0 0
- 用龙芯1c库在裸机编程中实现外部中断(GPIO中断、按键中断)
- 用龙芯1c库在RT-Thread下实现外部中断(GPIO中断、按键中断)
- 用龙芯1c库在裸机编程环境中实现硬件定时器中断
- 外部中断(按键1)
- 十.ARM裸机学习之中断系统2(S5PV210按键外部中断及中断处理)
- TX244裸机开发---按键与外部中断
- 【stm32f407】外部中断实现按键中断方式
- 【龙芯1c库】在裸机编程环境中常用的中断接口简介
- TQ2440裸机中断(外部中断)
- GEC210(S5PV210)裸机驱动之按键(外部)中断
- 一知半解学CubeMX——GPIO:外部(按键)中断
- CC2530裸机实现PWM输出(按键外部中断改变占空比)
- GPIO端口按键中断
- nrf51822 --- 外部中断 (按键)
- 2440裸机编程之四 外部中断
- TQ210裸机编程(4)——按键(中断法)
- TQ210裸机编程(4)——按键(中断法)
- TQ210裸机编程(4)——按键(中断法)
- 洛谷P2401 不等数列
- 关于SHA1签名
- HDOJ2075 A|B? (水题)
- Mysql 安装配置 一
- Texture2D转Sprite
- 用龙芯1c库在裸机编程中实现外部中断(GPIO中断、按键中断)
- OPenCV3.2 图像的线性混合
- Mac安装maven
- HDOJ2076 夹角有多大(题目已修改,注意读题)
- MFC字体大小更改
- 单链表ADT实现集合交并补
- php 环信发送私信
- PAT 甲级 1095. Cars on Campus (30)
- 请注意,您有一条新消息未查看