首页 > 其他分享 >[NCS] nrf5340 GPIO控制

[NCS] nrf5340 GPIO控制

时间:2024-03-11 22:48:24浏览次数:24  
标签:led no NCS bsp nrf5340 uint8 GPIO dt LED

1.测试环境

硬件:nrf5340开发板

ncs版本:2.5.2

2.移植

2.1 CMakeLists.txt添加源文件

target_sources(app PRIVATE src/main.c src/bsp_led.c)

2.2 bsp_led.h

/**
 * @file bsp_led.h
 * @author wfagly
 * @brief 基于安富莱电子(www.armfly.com)例子修改
 * @version 1.0.1
 * @date 2024-03-09
 *
 * @copyright Copyright (c) 2024
 *
 */
#ifndef __BSP_LED_H
#define __BSP_LED_H
​
#ifdef __cplusplus
extern "C"
{
#endif
​
#include <zephyr/kernel.h>
​
#define BSP_LED_OFF 0U
#define BSP_LED_ON 1U
​
    /**
     * @brief open led func.
     *
     * @param _no led number
     */
    void bsp_LedOn(uint8_t _no);
​
    /**
     * @brief close led func.
     *
     * @param _no led number
     */
    void bsp_LedOff(uint8_t _no);
​
    /**
     * @brief
     *
     * @param _no led number
     * @return int 0-fail
     */
    int bsp_LedToggle(uint8_t _no);
​
    /**
     * @brief Obtain LED status.
     *
     * @param _no led number
     * @return uint8_t 1-on, 0-off
     */
    uint8_t bsp_IsLedOn(uint8_t _no);
​
    /**
     * @brief led init func. default led off.
     *
     * @return int 0-error, 1-success
     */
    int bsp_InitLed(void);
​
#ifdef __cplusplus
}
#endif
​
#endif //__BSP_LED_H

2.3 bsp_led.c

/**
 * @file bsp_led.c
 * @author wfagly
 * @brief
 * @version 1.0.1
 * @date 2024-03-09
 *
 * @copyright Copyright (c) 2024
 *
 */
#include "bsp_led.h"
#include <zephyr/drivers/gpio.h>
​
#define LED_LIST_COUT 4
​
/* The devicetree node identifier for the "led0" alias. */
#define LED0_NODE DT_ALIAS(led0)
#define LED1_NODE DT_ALIAS(led1)
#define LED2_NODE DT_ALIAS(led2)
#define LED3_NODE DT_ALIAS(led3)
​
/*
 * A build error on this line means your board is unsupported.
 * See the sample documentation for information on how to fix this.
 */
static const struct gpio_dt_spec led[LED_LIST_COUT] =
    {
        GPIO_DT_SPEC_GET(LED0_NODE, gpios),
        GPIO_DT_SPEC_GET(LED1_NODE, gpios),
        GPIO_DT_SPEC_GET(LED2_NODE, gpios),
        GPIO_DT_SPEC_GET(LED3_NODE, gpios),
};
​
void bsp_LedOn(uint8_t _no)
{
    gpio_pin_set_dt(&led[_no], BSP_LED_ON);
}
​
void bsp_LedOff(uint8_t _no)
{
    gpio_pin_set_dt(&led[_no], BSP_LED_OFF);
}
​
int bsp_LedToggle(uint8_t _no)
{
    int ret = gpio_pin_toggle_dt(&led[_no]);
    if (ret < 0)
    {
        return 0;
    }
}
​
uint8_t bsp_IsLedOn(uint8_t _no)
{
    return (uint8_t)gpio_pin_get_dt(&led[_no]);
}
​
int bsp_InitLed(void)
{
    int ret;
    for (uint8_t i = 0; i < LED_LIST_COUT; i++)
    {
        if (!gpio_is_ready_dt(&led[i]))
        {
            return 0;
        }
​
        ret = gpio_pin_configure_dt(&led[i], GPIO_OUTPUT_ACTIVE);
        if (ret < 0)
        {
            return 0;
        }
​
        gpio_pin_set_dt(&led[i], BSP_LED_OFF);
    }
    return 1;
}

3.测试

标签:led,no,NCS,bsp,nrf5340,uint8,GPIO,dt,LED
From: https://www.cnblogs.com/wfagly/p/18067264

相关文章

  • GPIO
    GPIOIO端口基本结构F1的IO结构图F4/F7/H7的IO结构图GPIO的八种工作方式详细的结构及工作方式见该文章:GPIO口工作原理的超详细解释(附电路图)-知乎(zhihu.com)通用外设驱动模型GPIO配置步骤相关HAL库函数简介关键结构体简介思维导图该思维导图来自......
  • [NCS] nrf5340 VS Code环境搭建
    1、安装工具链(nRF5xcommandlinetools)nRF5xcommandlinetools包括Jlink驱动以及Nordic自己开发的一些命令行工具,具体包括Jlink驱动,nrfjprog,nrfutil以及mergehex等。下载链接为:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools/Do......
  • mpsoc嵌入式vitis开发—AXI GPIO中断实验
    前言vitis版本:Vitis2023.2由于Vitis版本更新,很多API发生变化,学习原子哥的教程时很多代码对于不上,所以自己重新写一遍,并记录下自己踩过的坑,方便以后查看。这里直接给出代码,其他的流程参考原子哥的《2_DFZU2EG_4EVMPSoC之嵌入式Vitis开发指南_V1.0.pdf》代码#include"sleep.h......
  • 树莓派上基于Python控制GPIO
    树莓派上基于Python控制GPIO希望做到可以自动给阳台的花儿浇水~有以下几点:控制GPIO的拉高/拉低,并保持一段时间间隔加锁,避免重复有日志记录具体情况#!/usr/bin/envpython3#-*-coding:UTF-8-*-importRPi.GPIOasGPIOimporttimeimportfcntlimportloggingcl......
  • [cpp]: thread -- with header <syncstream>
    [cpp]: thread--withheader<syncstream>    一、说明: 1、【并发编程】thread编程中的同步输出:std::osyncstream// Definedinheader <syncstream>   二、程序代码1#include<iostream>2#include<string>3#include<......
  • GPIO的输入与输出
    一.GPIO简介二.GPIO基本结构寄存器是特殊的存储器,内核可用通过APB2总线对寄存器进行读写,寄存器每一位对应一个引脚。输出寄存器写1,对应引脚输出高电平;输入寄存器写1,则证明对应端口为高电平。其中寄存器只负责存储数据,驱动器用来驱动。三.GPIO位结构左边三个为寄存器,中间......
  • 04_GPIO输入
    GPIO输入按键介绍传感器模块介绍硬件电路C语言数据类型按键控制LED接线图代码LED.c#include"stm32f10x.h"//DeviceheadervoidLED_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDefGPIO_InitStruct;......
  • 03_GPIO输出
    GPIO输出简介GPIO基本结构GPIO位结构GPIO模式四种输入模式GPIO_Mode_IN_FLOATING浮空输入模式GPIO_Mode_IPU上拉输入模式GPIO_Mode_IPD下拉输入模式GPIO_Mode_AIN模拟输入模式四种输出模式GPIO_Mode_Out_OD开漏输出模式GPIO_Mode_Out_PP推挽输出模式G......
  • STM32-GPIO
    GPIO_Mode_AIN模拟输入GPIO_Mode_IN_FLOATING浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入GPIO_Mode_Out_OD开漏输出GPIO_Mode_Out_PP推挽输出GPIO_Mode_AF_OD复用开漏输出GPIO_Mode_AF_PP复用推挽输出1.两个保护二极管分别保证电压过高或过低时引走......
  • 06PCIE的GPIO控制卡
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!6.1概述还记得2008年左右刚刚参加工作,买一个简单的PCI的DAQ数据卡,或者IO卡都要好几千元。市面上主要是研华,凌华的数据......