当前位置: 首页 > wzjs >正文

flash 做ppt的模板下载网站网络服务器忙请稍后重试3008

flash 做ppt的模板下载网站,网络服务器忙请稍后重试3008,公众号设置下载wordpress,电影网站如何做不侵权00. 目录 文章目录 00. 目录01. 概述02. EXTI相关API03. 硬件设计04. 软件设计05. 实验现象06. 附录 01. 概述 我们在做按键控制实验时,虽然能实现 IO 口输入功能,但代码是一直在检测 IO 输入口的变化,因此效率不高,特别是在一些…

00. 目录

文章目录

    • 00. 目录
    • 01. 概述
    • 02. EXTI相关API
    • 03. 硬件设计
    • 04. 软件设计
    • 05. 实验现象
    • 06. 附录

01. 概述

我们在做按键控制实验时,虽然能实现 IO 口输入功能,但代码是一直在检测 IO 输入口的变化,因此效率不高,特别是在一些特定的场

合,比如某个按键,可能 1 天才按下一次去执行相关功能,这样我们就浪费大量时间来实时检测按键的情况。

为了解决这样的问题,我们引入外部中断概念,顾名思义,就是当按键被按下(产生中断)时,才去执行相关功能。这大大节省了 CPU 的资

源,因此中断在实际项目中应用非常普遍。

Hi3861 的外部中断有上升沿、下降沿、低电平、高电平触发模式。上升沿和下降沿触发如下:
在这里插入图片描述

若将按键对应 IO 配置为下降沿触发,当按键按下后即触发中断,然后在中断回调函数内执行对应功能。

Hi3861 每个 GPIO 都可以配置为外部中断使用。

在单片机中,中断是指当 CPU 在正常执行主程序时,突然发生了另一件事,该事件记为事件 A(中断请求),事件 A 的发生需要 CPU 暂

停执行主程序(中断响应)转而执行事件 A(中断处理)。当事件 A 被执行完,就会回到刚才产生的“断点”继续执行主函数(中断返

回)。整个流程便称之为中断,具体的过程如下图所示:
在这里插入图片描述

02. EXTI相关API

/**
* @ingroup  iot_gpio
* @brief  Enable GPIO interruption.CNcomment:使能某个GPIO的中断功能。CNend
*
* @par 描述:
*           Enable GPIO interruption.CNcomment:使能某个GPIO的中断功能。CNend
*
* @attention None
* @param  id            [IN] type #hi_gpio_idx,I/O index.CNcomment:GPIO索引。CNend
* @param  int_type      [IN] type #hi_gpio_int_type,Interruption type.CNcomment:中断类型。CNend
* @param  int_polarity  [IN] type #hi_gpio_int_polarity,Interruption polarity.CNcomment:中断极性。CNend
* @param  func          [IN] type #gpio_isr_callback_func,Callback function of interruption.
CNcomment:中断回调函数。CNend
* @param  arg           [IN] type #hi_void *,arg of interrupt callback function. CNcomment:中断回调函数入参。CNend
*
* @retval #0       Success.
* @retval #Other   Failure. For details, see hi_errno.h.
* @par 依赖:
*           @li hi_gpio.h:Describes GPIO APIs.CNcomment:文件用于描述GPIO相关接口。CNend
* @see  hi_gpio_unregister_isr_function。
*/
hi_u32 hi_gpio_register_isr_function(hi_gpio_idx id, hi_gpio_int_type int_type, hi_gpio_int_polarity int_polarity,gpio_isr_callback func, hi_void *arg);
功能:设置指定 GPIO 的中断功能
参数:id:指定的 IO 号intType:中断类型 intPolarity:中断极性 func:中断触发时的回调函数   arg:中断回调函数中使用的参数的指针
返回值:0 初始化成功,1 初始化失败       

03. 硬件设计

在这里插入图片描述

由图可知,P1 端子的 KEY1-KEY2 脚为按键控制端,要检测按键是否被按下,只需读取端子的 KEY1-KEY2 脚是否为低电平,因此可使用

导线将芯片的 IO 口与P1 端子的 KEY1-KEY2 脚连接。

04. 软件设计

bsp_exti.h

#ifndef BSP_EXTI_H
#define BSP_EXTI_H#include "cmsis_os2.h"
#include "hi_io.h"
#include "hi_gpio.h"//管脚定义
#define KEY1_PIN         HI_IO_NAME_GPIO_11
#define KEY1_GPIO_FUN    HI_IO_FUNC_GPIO_11_GPIO#define KEY2_PIN         HI_IO_NAME_GPIO_12
#define KEY2_GPIO_FUN    HI_IO_FUNC_GPIO_12_GPIO//函数声明
void exti_init(void);#endif

bsp_exti.c

#include "bsp_exti.h"
#include <unistd.h>
#include "bsp_led.h"//key1按键回调函数
hi_void key1_exti_callback(void)
{static uint8_t key1=0;usleep(10*1000);//消抖hi_gpio_get_input_val(KEY1_PIN,&key1);if(key1==0){LED(1);}
}//key2按键回调函数
hi_void key2_exti_callback(void)
{static uint8_t key2=0;usleep(10*1000);//消抖hi_gpio_get_input_val(KEY2_PIN,&key2);if(key2==0){LED(0);}
}//外部中断初始化
void exti_init(void)
{hi_gpio_init();                                            // GPIO初始化hi_io_set_pull(KEY1_PIN, HI_IO_PULL_UP);                   // 设置GPIO上拉hi_io_set_func(KEY1_PIN, KEY1_GPIO_FUN);                   // 设置IO为GPIO功能hi_gpio_set_dir(KEY1_PIN, HI_GPIO_DIR_IN);                // 设置GPIO为输入模式hi_gpio_register_isr_function(KEY1_PIN,                         // 按键引脚HI_INT_TYPE_EDGE,            // 下降沿检测HI_GPIO_EDGE_FALL_LEVEL_LOW, // 低电平时触发&key1_exti_callback,         // 触发后调用的回调函数NULL);                       // 回调函数的传参值hi_io_set_pull(KEY2_PIN, HI_IO_PULL_UP);                   // 设置GPIO上拉hi_io_set_func(KEY2_PIN, KEY2_GPIO_FUN);                   // 设置IO为GPIO功能hi_gpio_set_dir(KEY2_PIN, HI_GPIO_DIR_IN);                // 设置GPIO为输入模式hi_gpio_register_isr_function(KEY2_PIN,                         // 按键引脚HI_INT_TYPE_EDGE,            // 下降沿检测HI_GPIO_EDGE_FALL_LEVEL_LOW, // 低电平时触发&key2_exti_callback,         // 触发后调用的回调函数NULL);                       // 回调函数的传参值
}

template.c

/******************************************************************************************************* @file        template.c***************************************************************************************************** 实验现象:K1键控制LED亮,K2键控制LED灭******************************************************************************************************/#include <stdio.h>
#include <unistd.h>#include "ohos_init.h"
#include "cmsis_os2.h"#include "bsp_exti.h"
#include "bsp_led.h"//控制任务
osThreadId_t EXTI_Task_ID; //任务IDvoid EXTI_Task(void)
{led_init();//LED初始化exti_init();//外部中断初始化while (1) {usleep(10*1000);}
}
//任务创建
void exti_task_create(void)
{osThreadAttr_t taskOptions;taskOptions.name = "extiTask";       // 任务的名字taskOptions.attr_bits = 0;               // 属性位taskOptions.cb_mem = NULL;               // 堆空间地址taskOptions.cb_size = 0;                 // 堆空间大小taskOptions.stack_mem = NULL;            // 栈空间地址taskOptions.stack_size = 1024;           // 栈空间大小 单位:字节taskOptions.priority = osPriorityNormal; // 任务的优先级EXTI_Task_ID = osThreadNew((osThreadFunc_t)EXTI_Task, NULL, &taskOptions); // 创建任务if (EXTI_Task_ID != NULL){printf("ID = %d, Task Create OK!\n", EXTI_Task_ID);}
}/*** @description: 初始化并创建任务* @param {*}* @return {*}*/
static void template_demo(void)
{printf("-Hi3861开发板--外部中断实验\r\n");exti_task_create();//任务创建
}
SYS_RUN(template_demo);

05. 实验现象

下载程序前,按照如下接线
在这里插入图片描述

实验现象:K1 键点亮 LED,K2 键熄灭 LED。

06. 附录


文章转载自:

http://OVLaUMkr.LxwgL.cn
http://XUiErBoc.LxwgL.cn
http://sRc4pTE1.LxwgL.cn
http://J3ssN7FN.LxwgL.cn
http://iT1hCO7D.LxwgL.cn
http://kwxybNWv.LxwgL.cn
http://GL2dcsI4.LxwgL.cn
http://CJ4c0L3V.LxwgL.cn
http://DkfTUMB1.LxwgL.cn
http://gu3hpKk4.LxwgL.cn
http://RvdW7ZJ0.LxwgL.cn
http://RlRQHzB2.LxwgL.cn
http://88e9WcvG.LxwgL.cn
http://6bDvDnwb.LxwgL.cn
http://hg9Umltz.LxwgL.cn
http://810NmtOU.LxwgL.cn
http://28EynRgV.LxwgL.cn
http://E8Xfg7yx.LxwgL.cn
http://bbLbUsur.LxwgL.cn
http://A3qICNs4.LxwgL.cn
http://eecghjBV.LxwgL.cn
http://RqjcSkYN.LxwgL.cn
http://fy3T205a.LxwgL.cn
http://SjqcWhZ3.LxwgL.cn
http://HwgmfoEb.LxwgL.cn
http://xhunFGB7.LxwgL.cn
http://McOPK0On.LxwgL.cn
http://DtbuNfWB.LxwgL.cn
http://9ouNx527.LxwgL.cn
http://wIkUNYrq.LxwgL.cn
http://www.dtcms.com/wzjs/646787.html

相关文章:

  • vue企业门户网站模板网站开发和嵌入式开发哪个
  • 我有服务器和模板怎么做网站标书制作的六步骤
  • lol英雄介绍网站模板做响应式网站好不好
  • 如何增加网站反链wordpress门户插件
  • 简述网站的四种常见结构网站收录不好的原因
  • 做网站之前需要准备什么软件wordpress视频代码
  • 网站网速慢网站建设项目的预算
  • 微网站建设及微信推广方案ppt模板微交易网站建设
  • 大气企业网站源码php湘潭网站建设搭建
  • 襄阳微网站建设黔彩终端效果图
  • 站长统计app软件下载官网dw软件破解版
  • 智能响应式网站html5做网页网站
  • 建个门户网站哪里可做网站
  • 网站添加内容品牌seo培训咨询
  • 福田做商城网站建设哪家技术好美容行业网站建设
  • 网站建设费用有哪些方面网络建设推广
  • wordpress淘宝客类网站建设上海的建设网站
  • 浙江住房和城乡建设网站怎么制作二维码里面的内容
  • sem网站做推广教育行业网站开发
  • 临沂网站哪家好织梦cms做视频网站
  • 网址导航模板手机优化软件下载
  • 如何做公司网站推广品牌策划 品牌年度服务
  • 长沙做网站多少钱找人做网站多少钱
  • 云南建设监理协会官方网站网站建设中页面模板
  • 网站用什么系统zenmeyong wordpress
  • dw 做网站的思路宁波城乡建设网站
  • 网站开发 开题报告做公司网站图片算是商用吗
  • 潼南集团网站建设wordpress没有仪表盘
  • 链家在线网站是哪个公司做的google搜索下载
  • 移动网站如何做权重做暧小说在线观看网站