新大陆STM32开发Lora通用库函剖析_lora库函数(1)

} else {
    key2_up_cnt = 0;
}


//KEY3
new_status = HAL\_GPIO\_ReadPin(KEY3_GPIO, KEY3_GPIO_PIN);
if((key3_status == KEY_UP) && (new_status == KEY_DOWN)) {
    key3_down_cnt++;
    if(key3_down_cnt >= DEBOUNCE_CNT) {
        is_key3_down = 1;
        key3_status = KEY_DOWN;
    }
} else {
    key3_down_cnt = 0;
}

if((key3_status == KEY_DOWN) && (new_status == KEY_UP)) {
    key3_up_cnt++;
    if(key3_up_cnt >= DEBOUNCE_CNT) {
					is_key3_down = 0;
        key3_status = KEY_UP;;
    }
} else {
    key3_up_cnt = 0;
}


//KEY4
new_status = HAL\_GPIO\_ReadPin(KEY4_GPIO, KEY4_GPIO_PIN);
if((key4_status == KEY_UP) && (new_status == KEY_DOWN)) {
    key4_down_cnt++;
    if(key4_down_cnt >= DEBOUNCE_CNT) {
        is_key4_down = 1;
        key4_status = KEY_DOWN;
    }
} else {
    key4_down_cnt = 0;
}

if((key4_status == KEY_DOWN) && (new_status == KEY_UP)) {
    key4_up_cnt++;
    if(key4_up_cnt >= DEBOUNCE_CNT) {
					is_key4_down = 0;
        key4_status = KEY_UP;;
    }
} else {
    key4_up_cnt = 0;
}

}

关于resetKeyx()
实现功能:用于清楚按键标志位
源代码:
void resetKeyx(void){
is_keyx_down = 0;
}
注意:在调用完isKeyxPressed()时一定要调用resetKeyx()用于清楚对应按键的标志位不然按键无法复用

实现案例
实现功能:按键2按下灯实现亮灭效果
#include <string.h>
#include “board.h”
#include “hal_key.h”
#include “tim-board.h”
#include “timer_handles.h”

void Init() {
BoardInitMcu();
BoardInitPeriph();
keys_init();//按键初始化
setTimer2Callback(Time2Handler);
Tim2McuInit(1);
}

void Scan_Key()
{
if(isKey2Pressed())
{
GpioToggle(&Led1);
resetKey2();
}

}

int main( void )
{
Init();
while( 1 )
{
Scan_Key();
}
}


### 三、关于OLED屏函数解析



重点函数()
导入#incldue “hal_oled.h”
OLED_Init(); //OLED屏初始化
OLED_Clear(); //清屏函数
OLED_Clear_Page(uint8_t page) //清除行

//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
void OLED_ShowChar(uint8_t x,uint8_t y,uint8_t chr);

//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//mode:模式 0,填充模式;1,叠加模式
//num:数值(0~4294967295);
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size);

//显示num的len个字节的16进制值值
//x,y :起点坐标
//len :字节个数
//size:字体大小
//num:数值(0~4294967295);
void OLED_ShowHex(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size);

//显示一个字符号串
//x,y :起点坐标
//要显示的字符串
void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr);

//显示汉字
//x,y :起点坐标
//输入oledfont.h下的Hzk数组的第几位,Hzk数组取模了一些开发当中常用到的字符可以对照写入
void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no);

//显示汉字
//x,y :起点坐标
//取模好的字符数组名
void OLED_ShowCHineseArray(uint8_t x,uint8_t y,char arr[32]);

//显示图片
//x,y :起点坐标
//width:图片的宽度 height:图片的高度
//取模好的图片数组
void OLED_DrawBMP(unsigned char x, unsigned char y,unsigned char width, unsigned char hight,unsigned char BMP[])

使用案例
#include <string.h>
#include “board.h”
#include “hal_key.h”

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值