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

Nordic 学习小记录

 1.判断按键有没有按下,通过和按键相连的引脚的高低电平判断。比如要判断BUTTON_1是否按下,可以通过判断(0.8)引脚是高电平还是低电平。而(0,8)引脚的名字是MODE_KEY

对应MODE_KEY引脚。引脚高电平为按键常态,引脚低电平为按键按下。就像SDA是P(1,9)引脚一样

2.同理,判断BUTTON_2 有没有按下,就看KEY_TEST这个引脚(0,11)是不是低电平即可

    注意:

   uint8_t MODE_KEY=0;
    uint8_t KEY_TEST=0;

这里面 MODE_KEY,KEY_TEST并不是按键,这只是一个常量。跟a=0是一样的意思。是为下面写代码写的。并不是说 MODE_KEY=0就代表MODE_KEY按下了。

#define BUTTON_1       8

(nrf_gpio_pin_read(BUTTON_1) == 0)

这才代表MODE_KEY按下。

        //MODE_KEY按键按下:写入数据
        if(nrf_gpio_pin_read(BUTTON_1) == 0)
        {
            if(MODE_KEY==0)
            {
                MODE_KEY=1;
                nrf_delay_ms(20);
                read_saadc_ntc();
                printf("\nBUTTON_1 \n");
                nrf_delay_ms(20);
            }
        }

这样写是为了不循环,就按一次出一次效果。

注意:void lcd(void){
    
    uint8_t MODE_KEY=0;
    uint8_t KEY_TEST=0;}

这样,定义常量写在函数里面就是局部常量,只能这一个函数用,别的函数用不了。拿出来就都可以用了。

3.上面那些按键写好以后,按下按键却没有反应

因为main里面没写:bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS); 

这个函数的作用是配置和初始化开发板上的LED和按钮,使它们可以被系统使用。初始化后,系统就可以通过相应的接口控制LED的亮灭和检测按钮的状态,以实现各种功能,比如指示状态、用户输入等。

在实际应用中,调用bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS);通常是在系统初始化阶段的一个重要步骤,以确保开发板上的LED和按钮可以正常工作,为后续的应用程序提供支持。

如果在嵌入式系统中的代码中没有调用bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS);来初始化开发板上的LED和按钮,那么通常会导致以下结果:

  1. LED无法正常工作:没有进行LED的初始化,系统无法控制LED的亮灭状态,因此无法通过LED来指示状态或执行其他操作。

  2. 按钮无法检测:没有进行按钮的初始化,系统无法检测按钮的状态变化,也就无法响应用户的按键操作。

  3. 可能导致系统功能异常:如果系统的正常运行依赖于对LED和按钮的控制与检测,那么没有进行初始化可能会导致系统功能异常或无法正常工作。

因此,一般情况下,在嵌入式系统开发中,确保对开发板上的外设进行正确的初始化是非常重要的,包括LED和按钮在内。调用bsp_board_init(BSP_INIT_LEDS | BSP_INIT_BUTTONS);可以确保开发板上的LED和按钮被正确初始化,以便系统可以正常使用它们的功能。

4.这是引脚:和按键和灯没关系。  主控主动设置引脚为输出先

nrf_gpio_cfg_output(NRF_GPIO_PIN_MAP(1,8));
nrf_gpio_pin_set(NRF_GPIO_PIN_MAP(1,8));

5.#define不供外部使用,可以写在.c文件

如果不给外部使用的写在.h文件,那在调用的时候,会调用2次

.c相当于是独立的

.h供别人使用的

6.  .c头文件上面会写

#include "pwm.h"
#include "nrfx_pwm.h"这些

一般第一个就是自己,比如lcd.c头文件第一个是lcd.h

.h文件

可以不写#include

可以只调用#include <stdint.h>,这个头文件里面包含u8,u16,u32这些


http://www.kler.cn/a/355041.html

相关文章:

  • CNN回归-卷积神经网络(Convolutional Neural Network)
  • 反序列化为啥可以利用加号绕过php正则匹配
  • 深度学习试题及答案解析(二)
  • 【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等
  • Linux之磁盘管理相关命令
  • VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用
  • R语言:ERGM指数随机图模型
  • Navigation2 算法流程
  • IDEA启动报错,java: OutOfMemoryError: insufficient memory
  • FLINK SQL 元数据持久化扩展
  • 如何将本地磁盘镜像包部署到docker中(以mysql5_7.tar.gz为例)
  • SpringBoot智能推荐:健康生活新趋势
  • 深入理解Python中的字符串:str()、字符提取、replace()替换及内存分析
  • JS爬虫实战之Tiktok中sec_id获取
  • JavaScript网页设计案例:构建动态交互的在线图书管理系统
  • 3万字66道Java基础面试题总结(2024版本)
  • 个人用数据挖掘笔记(待补充)
  • vb6 MSHFlexGrid1表格导出数据到电子表格 解决只能导出一次问题
  • ubuntu安装mysql5.7
  • RAID 矩阵
  • YOLO系列入门:1、YOLO V11环境搭建
  • python中不变的数据类型有哪些
  • 使用 nrm 管理 npm 镜像源
  • 0基础学Java之Day09(上午完整版)
  • 从零开始了解云WAF,您的网站安全升级指南
  • 直播美颜平台架构设计:基于视频美颜SDK的开发实践