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和按钮,那么通常会导致以下结果:
-
LED无法正常工作:没有进行LED的初始化,系统无法控制LED的亮灭状态,因此无法通过LED来指示状态或执行其他操作。
-
按钮无法检测:没有进行按钮的初始化,系统无法检测按钮的状态变化,也就无法响应用户的按键操作。
-
可能导致系统功能异常:如果系统的正常运行依赖于对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这些