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

品牌网站设计制作哪家正规潍坊市建设工程交易中心网站

品牌网站设计制作哪家正规,潍坊市建设工程交易中心网站,企业网站一般包括哪些内容,乐清问政网络平台下面再来探讨下驱动库如何实现任务的配置,驱动库的实现步骤应该和寄存器方式对应,关 键点就是如何调用驱动库的函数。 本例里同样的对比寄存器方式编写两路的 GPOITE 任务输出,一路配置为输出翻转,一路设 置为输出低电平。和 …
下面再来探讨下驱动库如何实现任务的配置,驱动库的实现步骤应该和寄存器方式对应,关
键点就是如何调用驱动库的函数。
本例里同样的对比寄存器方式编写两路的 GPOITE 任务输出,一路配置为输出翻转,一路设
置为输出低电平。和 GPIOTE 事件相反,初始化任务应该是输出,同时需要使能任务和触发任务的 驱动库函数。下面介绍下如下三个组件库函数:
(1)
nrfx_err_t nrfx_gpiote_out_init(nrfx_gpiote_pin_t                pin,nrfx_gpiote_out_config_t const * p_config)
{NRFX_ASSERT(nrf_gpio_pin_present_check(pin));NRFX_ASSERT(m_cb.state == NRFX_DRV_STATE_INITIALIZED);NRFX_ASSERT(p_config);nrfx_err_t err_code = NRFX_SUCCESS;if (pin_in_use(pin)){err_code = NRFX_ERROR_INVALID_STATE;}else{if (p_config->task_pin){int8_t channel = channel_port_alloc(pin, NULL, true);if (channel != NO_CHANNELS){nrf_gpiote_task_configure((uint32_t)channel,pin,p_config->action,p_config->init_state);}else{err_code = NRFX_ERROR_NO_MEM;}}else{pin_in_use_set(pin);}if (err_code == NRFX_SUCCESS){if (p_config->init_state == NRF_GPIOTE_INITIAL_VALUE_HIGH){nrf_gpio_pin_set(pin);}else{nrf_gpio_pin_clear(pin);}nrf_gpio_cfg_output(pin);pin_configured_set(pin);}}NRFX_LOG_INFO("Function: %s, error code: %s.", __func__, NRFX_LOG_ERROR_STRING_GET(err_code));return err_code;
}

nrfx_gpiote_out_init 函数的主要作用是初始化一个 GPIO 引脚作为 GPIOTE(通用外设中断和事件)的输出引脚。它接收一个引脚编号和一个配置结构体指针作为参数,根据配置对引脚进行相应的初始化设置,并返回初始化结果的错误码。

函数参数 • nrfx_gpiote_pin_t pin:要初始化的 GPIO 引脚编号。

• nrfx_gpiote_out_config_t const * p_config:指向 GPIO 输出配置结构体的指针,该结构体包含了引脚的各种配置信息,如是否作为任务引脚、引脚动作、初始状态等。

nrfx_gpiote_out_config_结构体定义如下 :

typedef struct
{nrf_gpiote_polarity_t action;     /**< Configuration of the pin task. */nrf_gpiote_outinit_t  init_state; /**< Initial state of the output pin. */bool                  task_pin;   /**< True if the pin is controlled by a GPIOTE task. */
} nrfx_gpiote_out_config_t;

其中nrf_gpiote_outinit_t是枚举类型,其定义如下 :

typedef enum
{NRF_GPIOTE_INITIAL_VALUE_LOW  = GPIOTE_CONFIG_OUTINIT_Low,       ///<  Low to high.NRF_GPIOTE_INITIAL_VALUE_HIGH = GPIOTE_CONFIG_OUTINIT_High       ///<  High to low.
} nrf_gpiote_outinit_t;

NRFX_ASSERT(nrf_gpio_pin_present_check(pin));
    NRFX_ASSERT(m_cb.state == NRFX_DRV_STATE_INITIALIZED);
    NRFX_ASSERT(p_config);


NRFX_ASSERT 是一个断言宏,用于在开发和调试阶段检查某些条件是否满足。如果条件不满足,程序会触发断言失败,帮助开发者快速定位问题。

nrf_gpio_pin_present_check(pin) 检查指定的引脚是否存在

 m_cb.state == NRFX_DRV_STATE_INITIALIZED 检查 GPIOTE 驱动的状态是否已经初始化。

 p_config 检查配置结构体指针是否有效。


if (pin_in_use(pin))
    {
        err_code = NRFX_ERROR_INVALID_STATE;
    }


pin_in_use(pin) 函数检查指定的引脚是否已经被使用。如果该引脚已经被使用,则将错误码设置为 NRFX_ERROR_INVALID_STATE,表示状态无效。


else
    {
        if (p_config->task_pin)
        {
            int8_t channel = channel_port_alloc(pin, NULL, true);

            if (channel != NO_CHANNELS)
            {
                nrf_gpiote_task_configure((uint32_t)channel,
                                          pin,
                                          p_config->action,
                                          p_config->init_state);
            }
            else
            {
                err_code = NRFX_ERROR_NO_MEM;
            }
        }


如果引脚未被使用,检查配置结构体中的 task_pin 字段。

如果 task_pin 为真,表示该引脚要作为任务引脚使用。

channel_port_alloc(pin, NULL, true) 函数尝试为该引脚分配一个 GPIOTE 通道。如果分配成功,返回通道编号;如果没有可用通道,返回 NO_CHANNELS。

如果通道分配成功,调用 nrf_gpiote_task_configure 函数对该通道进行配置,传入通道编号、引脚编号、引脚动作和初始状态等参数。

如果通道分配失败,将错误码设置为 NRFX_ERROR_NO_MEM,表示内存不足(这里实际是没有可用的 GPIOTE 通道)。


channel_port_alloc函数代码如下:
static int8_t channel_port_alloc(uint32_t pin, nrfx_gpiote_evt_handler_t handler, bool channel)
{int8_t   channel_id = NO_CHANNELS;uint32_t i;uint32_t start_idx = channel ? 0 : GPIOTE_CH_NUM;uint32_t end_idx   =channel ? GPIOTE_CH_NUM : (GPIOTE_CH_NUM + NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS);// critical sectionfor (i = start_idx; i < end_idx; i++){if (m_cb.handlers[i] == FORBIDDEN_HANDLER_ADDRESS){pin_in_use_by_te_set(pin, i, handler, channel);channel_id = i;break;}}// critical sectionreturn channel_id;
}


文章转载自:

http://ReEoIn9o.jtkfm.cn
http://RtOqrUKV.jtkfm.cn
http://8XDhCVEk.jtkfm.cn
http://HzpX7E66.jtkfm.cn
http://2rSB43Z5.jtkfm.cn
http://rXfmEZT4.jtkfm.cn
http://f1VW3JAN.jtkfm.cn
http://aRk61iGd.jtkfm.cn
http://XUfbk5qh.jtkfm.cn
http://cz3LMUn6.jtkfm.cn
http://Q255ZNxe.jtkfm.cn
http://tDW0MRoD.jtkfm.cn
http://t2ExDtFO.jtkfm.cn
http://ElvfzrH9.jtkfm.cn
http://EX0drAT9.jtkfm.cn
http://9rnWacVB.jtkfm.cn
http://0KFYLHRE.jtkfm.cn
http://kj1zcL9l.jtkfm.cn
http://Z28hZ4c2.jtkfm.cn
http://wzl6Y2co.jtkfm.cn
http://RzS9UvUq.jtkfm.cn
http://pP0lhhUg.jtkfm.cn
http://55XFUJIA.jtkfm.cn
http://w8rJyBmt.jtkfm.cn
http://go8L8lEg.jtkfm.cn
http://viJjYT54.jtkfm.cn
http://ww2ykW0K.jtkfm.cn
http://tsP0PinM.jtkfm.cn
http://NAz5DOQZ.jtkfm.cn
http://mBy01w0N.jtkfm.cn
http://www.dtcms.com/wzjs/670908.html

相关文章:

  • 网站主机选择与优化wordpress 收不到邮件
  • 织梦网站名称标签做网站能用ai好还是ps
  • 自己做网站必须要学哪些重庆市渝快办官网
  • 南通公司网站建设网页设计参考板式
  • 无线网站制作校园网站建设与应用
  • 电子商务网站建设与维护李建忠招商网官网
  • 银饰品网站建设规划策划书物联网开发软件有哪些
  • 青岛网站建设企业建站重庆江北营销型网站建设公司推荐
  • 公司注册网站查询深圳ppt设计制作公司
  • 学做婴儿衣服网站天津在线制作网站
  • 网站关键词找不到建筑信息平台app
  • 诏安县城乡建设局网站如何做好百度推广
  • 旅游网站制作建设青海省建设厅官方网站
  • 做网站联盟要多少钱营销型网站怎么做
  • 南京网站制作案例商城小程序费用标准
  • 乌兰察布市建设局网站WordPress添加ftp
  • t恤定制网站哪个好哪个网站可以做封面
  • 微网站是免费的吗非微信官方网页自己做的网站
  • 做好网站建设静态化广东东莞天气预报15天
  • 纺织品做外贸一般在哪个网站上一个公司只能备案一个网站吗
  • 门户网站怎么开发郑州网站建设郑州网站建设
  • 网站做快捷方式青岛做网站企业
  • 门户首页网站建设方案网站建站金融模板
  • 做网站线项目从立项到结束的流程图
  • 县市区没有建设信用网站和平台大数据营销的优缺点
  • 做心悦腾龙光环的网站网络推广策划案范文5篇
  • 珠宝类企业网站(手机端)北仑网站网页建设
  • 网站怎么做动态图片电商类网站有几个主流程
  • 安徽省建设厅八大员报名网站网站建设买服务器还是数据库
  • 济南网站建设网站制作闵行区天气