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

mvc网站开发实例微信拓客的最新方法

mvc网站开发实例,微信拓客的最新方法,公司黄页什么意思,西部数码网站管理助手3.0上一节通过 printf 打印输出数据,本节讲使用官方组件库输入和回环实验。对应串口输出和 输入,官方的组件库提供了两个组件函数,分别为 : app_uart_get 函数介绍如下所示 uint32_t app_uart_get(uint8_t * p_byte) {ASSERT(p_byte);bool r…
上一节通过 printf 打印输出数据,本节讲使用官方组件库输入和回环实验。对应串口输出和
输入,官方的组件库提供了两个组件函数,分别为 :
app_uart_get 函数介绍如下所示
uint32_t app_uart_get(uint8_t * p_byte)
{ASSERT(p_byte);bool rx_ovf = m_rx_ovf;ret_code_t err_code =  app_fifo_get(&m_rx_fifo, p_byte);// If FIFO was full new request to receive one byte was not scheduled. Must be done here.if (rx_ovf){m_rx_ovf = false;uint32_t uart_err_code = nrf_drv_uart_rx(&app_uart_inst, rx_buffer, 1);// RX resume should never fail.APP_ERROR_CHECK(uart_err_code);}return err_code;
}

(1)app_fifo_get函数 


uint32_t app_fifo_get(app_fifo_t * p_fifo, uint8_t * p_byte)
{
    if (FIFO_LENGTH() != 0)
    {
        fifo_get(p_fifo, p_byte);
        return NRF_SUCCESS;
    }

    return NRF_ERROR_NOT_FOUND;

}


//其中:app_fifo_t结构体定义如下:

typedef struct
{
    uint8_t *          p_buf;           /**< Pointer to FIFO buffer memory.                      */
    uint16_t           buf_size_mask;   /**< Read/write index mask. Also used for size checking. */
    volatile uint32_t  read_pos;        /**< Next read position in the FIFO buffer.              */
    volatile uint32_t  write_pos;       /**< Next write position in the FIFO buffer.             */
} app_fifo_t;

//其中:有此宏:FIFO_LENGTH

#define FIFO_LENGTH() fifo_length(p_fifo)  /**< Macro for calculating the FIFO length. */

//其中:fifo_length函数定义如下 :

static __INLINE uint32_t fifo_length(app_fifo_t * p_fifo)
{
    uint32_t tmp = p_fifo->read_pos;
    return p_fifo->write_pos - tmp;
}

//其中:fifo_get函数定义如下 :

static __INLINE void fifo_get(app_fifo_t * p_fifo, uint8_t * p_byte)
{
    fifo_peek(p_fifo, 0, p_byte);
    p_fifo->read_pos++;
}

//其中:fifo_peek函数定义如下:

static __INLINE void fifo_peek(app_fifo_t * p_fifo, uint16_t index, uint8_t * p_byte)
{
    *p_byte = p_fifo->p_buf[(p_fifo->read_pos + index) & p_fifo->buf_size_mask];
}

这段代码定义了一个内联函数 fifo_peek,其功能是查看 FIFO(先进先出)缓冲区里指定位置的一个字节数据,且不会改变 FIFO 的读指针位置。

fifo_peek:函数名,代表查看 FIFO 中指定位置字节的操作。

• app_fifo_t * p_fifo:该参数是一个指向 app_fifo_t 类型结构体的指针,app_fifo_t 应该是自定义的结构体类型,用于表示 FIFO 缓冲区。

• uint16_t index:这是一个 16 位无符号整数,代表要查看的字节在 FIFO 缓冲区中的相对索引位置。

• uint8_t * p_byte:这是一个指向 8 位无符号整数的指针,用于存储从 FIFO 缓冲区中读取的字节数据。

p_fifo->p_buf:访问 app_fifo_t 结构体中的 p_buf 成员,该成员应该是一个指向 FIFO 缓冲区的指针。

• p_fifo->read_pos:访问 app_fifo_t 结构体中的 read_pos 成员,此成员表示当前 FIFO 缓冲区的读指针位置。

• (p_fifo->read_pos + index):将读指针位置与指定的相对索引相加,从而得到要查看的字节在缓冲区中的绝对索引。

• & p_fifo->buf_size_mask:使用按位与操作将绝对索引与 buf_size_mask 进行运算。buf_size_mask 通常是一个用于实现环形缓冲区的掩码,其作用是确保索引不会超出缓冲区的大小范围,当索引超出缓冲区大小时,会自动回绕到缓冲区的起始位置。

fifo_peek 函数能够在不改变 FIFO 缓冲区读指针位置的情况下,查看指定位置的一个字节数据。这种操作在某些场景下非常有用,例如在不影响后续读取操作的前提下,预先查看 FIFO 缓冲区中的数据。        


(2)nrf_drv_uart_rx函数

__STATIC_INLINE
ret_code_t nrf_drv_uart_rx(nrf_drv_uart_t  const * p_instance,
                                                      uint8_t *              p_data,
                                                       uint8_t                length)
{
    uint32_t result = 0;
    if (NRF_DRV_UART_USE_UARTE)
    {
        result = nrfx_uarte_rx(&p_instance->uarte,
                               p_data,
                               length);
    }
    else if (NRF_DRV_UART_USE_UART)
    {
        result = nrfx_uart_rx(&p_instance->uart,
                              p_data,
                              length);
    }
    return result;
}


//其中nrf_drv_uart_结构体如下:

typedef struct
{
    uint8_t inst_idx;
#if defined(NRF_DRV_UART_WITH_UARTE)
    nrfx_uarte_t uarte;
#endif
#if defined(NRF_DRV_UART_WITH_UART)
    nrfx_uart_t uart;
#endif
} nrf_drv_uart_t;

http://www.dtcms.com/wzjs/398960.html

相关文章:

  • 设计公司网站建设费用网络排名优化软件
  • 番禺网站优化seo培训教程视频
  • 品牌营销网站建设新产品推广策划方案
  • 网站建设方案书要写吗百度最新推广产品
  • 网站建设微信营销公司软文代写公司
  • 做网站用的大图重庆网络营销
  • 做餐厅logo用什么软件网站西地那非片说明书
  • 宁波正规网站建设使用方法青岛seo全网营销
  • 武汉网页模板建站东莞网络营销全网推广
  • 天津做美缝的网站深圳谷歌推广公司
  • 东莞整站优化推广公司找火速百度seo查询系统
  • 河南单位网站建设学生个人网页制作html代码
  • 武冈做网站凡科建站登录
  • 建设企业网站公司百度关键词优化多少钱
  • 金属材料网站建设搜索引擎优化的核心本质
  • 营销和运营的区别是什么吉林seo基础知识
  • 云主机iss怎么做网站网页模板素材
  • 网站怎么做阿里妈妈转链友情链接交换要注意哪些问题
  • 如何做黑客攻击网站外贸建站教程
  • 建设的基本流程网站微信朋友圈广告
  • 做网站联系电话今日头条官网首页
  • 网站绝对路径301怎么创建网站
  • 辉县网站建设求职简历加强服务保障满足群众急需i
  • 北京网站公司建设可以全部免费观看的软件
  • 上海高登联合建设网站广东seo网站设计
  • 网站建设相关pptseo常用工具
  • 学做川菜最好的网站开发一个app需要多少钱
  • 手机网站整站模板下载工具网站优化策略分析论文
  • 柳州网站虚拟主机公司湖人最新消息
  • 有什么网站可以做运动百度官网认证价格