我在之前的帖子<实现按键"按下事件"和"释放事件"的通用框架(V0.0.1)>中阐述了DTButton-V0.0.1的设计思路,并且也在帖子中开源了实现代码. 实现这个框架的意图非常明显,就是为了偷懒,想要响应按键事件的时候可以一行代码搞定.也正是因为只想偷懒,V0.0.1版本在实现上非常的简单粗暴:快速实现功能即可,其它问题暂时不考虑. 核心实现代码如下: 有同学可能会说:这样实现有什么问题吗?看起来合情合理,用起来也没问题啊! 是的!从功能实现角度,…
在帖子 <鸿蒙开发板外设控制>直播图文版(2020.10.28) 中我们提到过:"开发板上的按键也可以看作一种 GPIO 外设." 因此,要捕捉按键的状态(按下或释放)必须操作对应的 GPIO 端口,具体步骤如下: 1.确定目标按键对应的 GPIO 引脚(可通过设备文档找到对应关系) 2.重新定义 GPIO 引脚的功能,数据传输方向设置为输入(WIFI_IOT_GPIO_DIR_IN) 3.设置按键事件触发方式(电平触发或边沿触发),并注册回调函数 示例代码如下: 代码说明…
转自迅为电子技术论坛:http://bbs.topeetboard.com GPIO 的寄存器通过 ioremap函数转换之后,可以通过直接控制虚拟地址来控制物理地址(寄存器的实际地址),这样就实现 GPIO的读和写以及其它任意功能. 需要的基础知识虚拟地址和物理地址内存管理单元概念linux 驱动模块的加载 主要内容GPIO 的寄存器文档详细介绍和说明函数 ioremap的用法使用 ioremap实现对 GPIO的控制 硬件以 LED2(靠近蜂鸣器的 LED)为例,介绍原理图以及Datashe…
小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功能. 这里感谢唐佐林老师的无私分享,利用他开发的按钮组件,开箱即用,节省了大量的开发时间(链接).首先将按钮组件的初始化函数InitButton搬到我们的主程序中,再写一个按钮事件回调函数Button_Callback,里面加入对逻辑的判断和处理即可. //按钮事件回调函数 static void Butto…
有幸得到米尔电子zynq系列开发板Z-turn Board试用体验,下面说说我这款zynq系列的Z-TURN板子外设配置.从Z-turn Board原理图上看,目前可以配置的FPGA管脚大概有100多个,其它的管脚全部分配到A9上面,我用ISE14.6配置了几个通信接口,然后生成API接口,目前ARM端在裸机跑程序,后续上操作系统试试网口的通信功能,图中红色的圈即为配置的外设通信口.…
librws: Tiny, cross platform websocket client C library 相关代码可在下面下载,也可进入librws: 将librws移植到鸿蒙Hi_3861开发板上 (gitee.com)查看 技术有限,如有错误还望不吝赐教. 基础:完成官方的快速入门教程 虽然在web双向通信中,除了使用ajax(单向轮询)外,一般都推荐websocket,但网上关于websocket的实现代码很少,而且大部分为js和java,很少有C语言.因为课程项目开发需要使用到we…
引言 各位大佬,晚上好啊,在上一篇博客中,我们讲了什么是UART串口通讯,以及使用USB转TTL使得单片机可以和c#上位机做一个串口通讯,接下来,为大家带来PWM的概念原理,以及实际案例,使用PWM对电机进行速度调制,因为本课程的最后是做一个红外遥控的智能小车,所以是需要电机四个,驱动四个,轮胎四个,所以PWM对于最后的成果也是极为重要,并且在实际开发中,PWM也是比较常用的调速方式. 概念 PWM全称Pulse width modulation,中文翻译为脉冲宽度调制,其基本原理为控制方式就是…
说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件命名,程序框架,注释等都比较规范,大家阅读或者移植都会比较方便.      另外,阅读代码时,务必将编辑器的缩进参数和TAB设置为4来阅读本文件,否则显示不整齐. 3.本教程每周会继续更新1-2章,之后将开启配套的视频教程制作,加大对初学者的支持力度. 4.V5,V6,V7将通过这次升级,达到底层驱…
总是做各种Demo,是时候做个什么小应用来练练手了.踌躇了很久,果然还是搞个小游戏才有意思.想到几年前风靡全球的FlappyBird,一个屏幕一个按钮就足够了,正好适合.OLED屏幕.按键的驱动已经有大牛们发布了,拿来用就可以.游戏逻辑什么的,用C语言实现也不是什么难事.主要目的就是要验证一下HarmonyOS复杂界面即时交互应用可行性. 这一篇我们主要解决屏幕绘制的问题,下一篇文章将把剩余的部分介绍完. 我们需要用变量记录小鸟的Y坐标.垂直速度.各个烟囱的位置.方向等数据,然后在主循环中不断更…
操作: 实现按下一个按键,对应的数码管和点阵显示相应的数字 代码: /*  *******************数码管按键综合项目********************* */ #include <reg52.h> int local(unsigned int i); sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit key1 = P2^4;…