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

微网站管理平台网站正在建设中页面设置

微网站管理平台,网站正在建设中页面设置,校园二手市场网站开发,邯郸比较有名的网络推广公司一、目的 在上篇中《HPM6750系列--第九篇 GPIO详解#xff08;基本操作#xff09;》我们讲解了GPIO的基本操作#xff0c;本篇继续讲解GPIO的中断处理。 二、介绍 将一个引脚设置为中断涉及到以下几个步骤#xff08;此处我们以PZ02举例#xff09;#xff1a; 1.设置IO…一、目的 在上篇中《HPM6750系列--第九篇 GPIO详解基本操作》我们讲解了GPIO的基本操作本篇继续讲解GPIO的中断处理。 二、介绍 将一个引脚设置为中断涉及到以下几个步骤此处我们以PZ02举例 1.设置IOC/PIOC/BIO中对应的引脚复用为gpio功能 void init_gpio_pins(void) {uint32_t pad_ctl IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(1);#ifdef USING_GPIO0_FOR_GPIOZHPM_IOC-PAD[IOC_PAD_PZ02].FUNC_CTL IOC_PZ02_FUNC_CTL_GPIO_Z_02; //②HPM_IOC-PAD[IOC_PAD_PZ02].PAD_CTL pad_ctl; //③/* PZ port IO needs to configure BIOC as well */HPM_BIOC-PAD[IOC_PAD_PZ02].FUNC_CTL IOC_PZ02_FUNC_CTL_SOC_PZ_02; //① #endif } PZ02是电池备份域的IO由HPM_BIOC设置复用功能如果需要GPIO0来控制的话需要先映射到IOC再由HPM_IOC来复用成GPIO。 ①HPM_BIOC将PZ02复用为SOC_PZ_02也就是由HPM_IOC来决定其复用功能 ②HPM_IOC将PZ02复用为GPIO ③设置为内部上拉 经过上面的设置之后PZ02就由GPIO0来进行后续的方向设置、中断配置         2.设置引脚为输入 /*** brief Set pin to output mode** param ptr GPIO base address* param port Port index* param pin Pin index*/ static inline void gpio_set_pin_output(GPIO_Type *ptr, uint32_t port, uint8_t pin) {ptr-OE[port].SET 1 pin; }void gpio_config_pin_interrupt(GPIO_Type *ptr, uint32_t gpio_index, uint8_t pin_index, gpio_interrupt_trigger_t trigger) {switch (trigger) {case gpio_interrupt_trigger_level_high:case gpio_interrupt_trigger_level_low:ptr-TP[gpio_index].CLEAR 1 pin_index;if (trigger gpio_interrupt_trigger_level_high) {ptr-PL[gpio_index].CLEAR 1 pin_index;} else {ptr-PL[gpio_index].SET 1 pin_index;}break;case gpio_interrupt_trigger_edge_falling:case gpio_interrupt_trigger_edge_rising: #if defined(GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT) (GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT 1)ptr-PD[gpio_index].CLEAR 1 pin_index; #endifptr-TP[gpio_index].SET 1 pin_index;if (trigger gpio_interrupt_trigger_edge_rising) {ptr-PL[gpio_index].CLEAR 1 pin_index;} else {ptr-PL[gpio_index].SET 1 pin_index;}break; #if defined(GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT) (GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT 1)case gpio_interrupt_trigger_edge_both:ptr-TP[gpio_index].SET 1 pin_index;ptr-PD[gpio_index].SET 1 pin_index;break; #endifdefault:return;} }void test_gpio_input_interrupt(void) {gpio_interrupt_trigger_t trigger;printf(input interrupt\n); #ifdef BOARD_LED_GPIO_CTRLprintf(user led will be switched on off based on user switch\n);gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,BOARD_LED_GPIO_PIN); #endifgpio_set_pin_input(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,BOARD_APP_GPIO_PIN); //① #if defined(GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT) (GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT 1)trigger gpio_interrupt_trigger_edge_both; #elsetrigger gpio_interrupt_trigger_edge_falling; #endifgpio_config_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,BOARD_APP_GPIO_PIN, trigger); //②gpio_enable_pin_interrupt(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,BOARD_APP_GPIO_PIN); //③intc_m_enable_irq_with_priority(BOARD_APP_GPIO_IRQ, 1); //④while (1) {__asm(wfi);} } ①设置PZ02为输入引脚。  ②设置边沿中断下降沿触发 ③使能中断 ④设置中断优先级 用户可以通过 GPIO 控制器的 IE 寄存器打开 GPIO 中断IE 寄存器内的对应位置 1 就可以使能对应 IO 的中断。 用户可以通过 GPIO 控制器的 TP 寄存器来指定中断的类型对应位置 1表示中断由边沿触发对应位置0表示中断由电平触发 用户可以通过 GPIO 控制器的 PL 寄存器来指定中断的极性对应位置 1表示中断由下降沿或者低电平触发对应位置 0表示中断由上升沿或高电平触发。 用户可以通过 GPIO 控制器的 IF 寄存器来查询中断的状态对应标志位置 1表示对应 IO 有中断待处理。 3.注册中断函数 void isr_gpio(void) {gpio_clear_pin_interrupt_flag(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX,BOARD_APP_GPIO_PIN); #ifdef BOARD_LED_GPIO_CTRLgpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX,BOARD_LED_GPIO_PIN);printf(toggle led pin output\n); #else #if defined(GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT) (GPIO_SOC_HAS_EDGE_BOTH_INTERRUPT 1)if (gpio_read_pin(BOARD_APP_GPIO_CTRL, BOARD_APP_GPIO_INDEX, BOARD_APP_GPIO_PIN) false) {printf(user key pressed\n);} else {printf(user key released\n);} #elseprintf(user key pressed\n); #endif #endif} SDK_DECLARE_EXT_ISR_M(BOARD_APP_GPIO_IRQ, isr_gpio) 在中断函数中清除HPM_GPIO0.PZ.02中断标志位。 三、实战 首先拷贝gpio工程 cp -r $HPM_SDK_BASE/samples/drivers/gpio ~/workspace/work/hpm cd ~/workspace/work/hpm/gpio cp -r ~/workspace/work/hpm/hello_world/.vscode ~/workspace/work/hpm/gpio/ code .选择flash_xip编译并进入调试窗口然后我们按一下开发板上的PBUTN按键就会触发中断我们在中断中添加断点。 通过查看IF[GPIOZ]我们发现其值为0x4也就是bit2为1说明中断触发了。 然后我们继续执行发现IF[GPIOZ]变成了0x0因为中断处理函数中我们需要清除中断标志。 另外串口打印中也有中断触发的打印信息。 至此本篇的内容就结束了主要讲解了IO映射、IO中断的类型、中断注册以及中断使能。
http://www.yutouwan.com/news/383158/

相关文章:

  • 阿里云做网站id怎么自动导入wordpress
  • 网站ueologo设计竞标网站
  • 服装网站建设规划书怎么写手机网站建设设计服务
  • 网站名称能用商标做名称吗咸阳网站建设工作室
  • 常州做网站企业某俄文网站
  • 综合性电子商务网站有哪些做做网站需要多少钱
  • 一级造价工程师报名网站wordpress 文章名
  • 廊坊做网站优化的公司网站优化优化怎么做
  • 备案过的网站换空间创意咨询策划公司
  • 福州网上商城网站建设一级a做爰片视频免费观看网站
  • 做国外搞笑网站ui设计师可以做到多少岁
  • 做付费动漫网站百度app官方下载安装到手机
  • 用asp做网站需要准备什么软件网络推广是干嘛的
  • 毕业设计做网站答辩会问什么网站建设所需服务器
  • 上海高登联合建设网站专业设计企业网站
  • 有没有一种app类似网站建设国土分局网站建设方案
  • vue框架做的网站三亚网红路
  • 专业网站设计都选亿企邦花18000去达内培训值吗
  • jsp网站开发广告位wordpress建站上海
  • 小企业网站建设的连接方式自己做视频网站怎么让加载速度变快
  • 嘉兴建设中心小学网站做gif动图的网站犯法吗
  • 网站流量盈利模式免费ppt模板下载软件有哪些
  • 做坑人网站二维码网站备案 如何填
  • 什么是企业营销型网站正规制作网站公司哪家好
  • 怎么做品牌推广网站高端品牌名字怎么取
  • 建站网站公司调查wordpress判断语句
  • 建设协会网站软件开发工具平台
  • 自建网站如何上传视频公司网站建设需要注意的地方
  • 经过开发建设 网站上线了net域名 著名网站
  • 丽水市住房和城乡建设局网站纯代码为WordPress添加