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

淄博网站建设服务营销型网站方案

淄博网站建设服务,营销型网站方案,为什么广州政府网站做的不好,温州英文seo在嵌入式系统开发中,GPIO(通用输入输出端口)是实现硬件与软件交互的关键组件。本节主要利用的时GPIO的输入采集功能,本节的主要功能为,读取板载按键,当按键按下时,对应led亮起,抬起按…

在嵌入式系统开发中,GPIO(通用输入输出端口)是实现硬件与软件交互的关键组件。本节主要利用的时GPIO的输入采集功能,本节的主要功能为,读取板载按键,当按键按下时,对应led亮起,抬起按键,对应led熄灭。

硬件设计

评估板板载三个机械按键,分别接入MCU的PE10、PB4、PB3,当按键按下时,控制引脚通过按键接地,表现为低电平,当按键抬起时,io通过电阻连接到VCC,此时表现为高电平

软件设计

代码分析

本节主要验证GPIO的输入功能,所不同的是,在初始化gpio结构体时需要将输出配置为输入。我们在Bsp文件夹中新建key.c和key.h,在c文件中添加如下代码:

  1. void User_KEY_Init()
  2. {
  3.     GPIO_InitTypeDef  GPIO_InitStructure;
  4.     PLIC_InitTypeDef  PLIC_InitStructure;  
  5.         
  6.     GPIOB_CLK_ENABLE();
  7.     GPIOE_CLK_ENABLE();
  8.     PLIC_CLK_ENABLE();
  9.    
  10.     /* GPIOE Configure */
  11.     GPIO_InitStructure.GPIO_Pin       = GPIO_Pin_10; 
  12.     GPIO_InitStructure.GPIO_Mode      = GPIO_Mode_IN;
  13.     GPIO_InitStructure.GPIO_IType     = GPIO_IPU;
  14.     GPIO_InitStructure.GPIO_OType     = GPIO_Out_PP;
  15.     GPIO_InitStructure.GPIO_OStrength = GPIO_OStrength_9mA;
  16.     GPIO_Init(GPIOE, &GPIO_InitStructure);  
  17.     
  18.     /* GPIOB Configure */
  19.     GPIO_InitStructure.GPIO_Pin       = GPIO_Pin_4|GPIO_Pin_3; 
  20.     GPIO_Init(GPIOB, &GPIO_InitStructure); 
  21.     PLIC_InitStructure.PLIC_IRQChannel = GPIOE_IRQn;
  22.     PLIC_InitStructure.PLIC_IRQPriority = 1;
  23.     PLIC_InitStructure.PLIC_IRQChannelCmd = ENABLE;
  24.     PLIC_Init(&PLIC_InitStructure);
  25.     
  26.     PLIC_InitStructure.PLIC_IRQChannel = GPIOB_IRQn;
  27.     PLIC_InitStructure.PLIC_IRQPriority = 2;
  28.     PLIC_InitStructure.PLIC_IRQChannelCmd = ENABLE;
  29.     PLIC_Init(&PLIC_InitStructure);
  30.     /*Clear Interrupt start state*/
  31.     GPIO_ClearITPendingBit(GPIOE, GPIO_Pin_10);
  32.     GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_4|GPIO_Pin_3);
  33.     /*Config Interrupt trigger type*/
  34.     GPIO_ITConfig(GPIOE, GPIO_Pin_10, GPIO_ITType_EDGEDOWN, ENABLE);
  35.     GPIO_ITConfig(GPIOB, GPIO_Pin_4|GPIO_Pin_3, GPIO_ITType_EDGEDOWN, ENABLE);
  36. }

在本小结的例程中,我们采用IO中断的形式读取IO状态,PLIC的内容在后边会具体介绍,因此在此处只需要参考这个配置过程即可。

第10~20行为gpio输入模式初始化,由于按键正常情况下接口表现为高电平,所以将接口配置为上拉输入,可以保证接口稳定。

第22~30行为中断模块配置,主要功能就是开启两个IO端口的中断。

第33~37行,在GPIO中需要配置中断触发模式,此处配置为GPIO_ITType_EDGEDOWN下降沿触发,在此之前最好清除一下中断初始状态。

接下来编写中断处理函数:

  1. void GPIOE_IRQ_Handler()
  2. {
  3.   if(GPIO_GetITStatus(GPIOE, GPIO_Pin_10) == SET)
  4.   {
  5.     key1_flag = 1;
  6.      /*Clear Interrupt start state*/
  7.     GPIO_ClearITPendingBit(GPIOE, GPIO_Pin_10);
  8.   }
  9. }
  10. void GPIOB_IRQ_Handler()
  11. {
  12.   if(GPIO_GetITStatus(GPIOB, GPIO_Pin_4) == SET)
  13.   {
  14.     key2_flag = 1;
  15.      /*Clear Interrupt start state*/
  16.     GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_4);
  17.   }
  18.   if(GPIO_GetITStatus(GPIOB, GPIO_Pin_3) == SET)
  19.   {
  20.     key3_flag = 1;
  21.      /*Clear Interrupt start state*/
  22.     GPIO_ClearITPendingBit(GPIOB, GPIO_Pin_3);
  23.   }
  24. }

AS32的中断处理函数划分相对ARM更细,针对不同端口有不同的处理函数,在这个函数中,我们首先调用GPIO_GetITStatus函数确定中断源,之后置位按键状态以便主程序中进行处理。

最后我们编写主逻辑:

  1.     if(key1_flag)
  2.         {
  3.               key1_flag = 0;
  4.               printf("The key1 pressed!\r\n");
  5.               LED1_TOGGLE();
  6.         }
  7.         if(key2_flag)
  8.         {
  9.                  key2_flag = 0;
  10.             printf("The key2 pressed!\r\n");
  11.             LED2_TOGGLE();
  12.  }
  13.  if(key3_flag)
  14.  {
  15.             key3_flag = 0;
  16.             printf("The key3 pressed!\r\n");
  17.             LED3_TOGGLE();
  18.   }

主函数循环中添加上述代码逻辑,主要功能就是当按键按下时,对应led进行一个亮灭翻转。

此处需要说明的是,如果不用中断形式操作,那么我们在案件初始化函数中只需要保留GPIO_Init函数之前的内容即可,然后在主循环逻辑中将判断中的内容可使用库函数中的GPIO_ReadInputDataBit函数实现io电平读取。

http://www.dtcms.com/wzjs/432004.html

相关文章:

  • 广州商城网站建设公司seo关键词优化排名软件
  • 网站设计策划案备案域名出售平台
  • 公司网页网站建设 ppt模板下载爱站网综合查询
  • 网站建设公司不让放自己空间站系统优化app
  • 视频 播放网站怎么做做网站找哪家好
  • 网剧推广赚钱是真的吗杭州优化公司多少钱
  • 网站开发项目的需求分析爱站网官网关键词
  • 网站根目录是什么网站人多怎么优化
  • 自己搭建服务器做视频网站磁力链最好用的搜索引擎
  • 仿网站ppt怎么做百度应用市场app下载安装
  • 网站建设功能是什么什么是网站推广
  • wordpress 4.9.4 安装外贸网站seo教程
  • 网站推广有哪些手段百度云搜索引擎入口百度网盘
  • 做秒杀网站有哪些网络推广营销方案免费
  • ps做网站效果图制作过程国外网站制作
  • 易语言做试用点击网站我想做电商怎么加入
  • 培训网站视频不能拖动怎么办网络运营工作内容
  • 婚纱定制网站哪个好全国各大新闻网站投稿
  • 绍兴做微网站近期重大新闻事件10条
  • 网站程序流程图跨境电商seo是什么意思
  • 苹果装饰网站开发案例百度添加到桌面
  • 哈尔滨做网站的免费建站平台哪个好
  • 网站如何做会员通用百度关键词热搜
  • 电子商务网站建设和管理的意义适合成人参加的培训班
  • 做dj网站上海高端网站定制
  • 网站建设品牌公司商丘网络推广公司
  • 崇礼做网站的公司友情链接可以帮助店铺提高浏览量
  • 代做动画毕业设计的网站热搜在哪里可以看
  • python网站开发书籍推荐全网搜索引擎优化
  • 有了网站源码可以做网站吗站长素材网站