2020年2月更新说明 - notrynohigh/BabyOS GitHub Wiki

Xmodem128+Ymodem

Xmodem 和 Ymodem 完成了接收部分,采用同样的套路。

首先初始化,指定发送字节的函数以及回调函数。每收到一帧数据,解析成

功后都会调用回调,回调参数 pbuf 为 NULL 时表示结束。初始化 API:

int bXmodem128Init(pcb_t fcb, psend fs);

int bYmodemInit(pymcb_t fcb, pymsend fs);

回调函数原型如下所示:

typedef void (*pcb_t)(uint16_t number, uint8_t *pbuf);

Xmodem128 每次传输 128 个字节,number 从 0 开始计数,通过 number 可以

算出已接收多少个字节。

typedef void (*pymcb_t)(uint8_t t, uint8_t *pbuf, uint16_t len);

Ymodem 每次传输的数据 1k 或者 128 字节,同时 Ymodem 可以传输文件信息

和文件数据。通过 t 可以分辨是文件信息(文件名和大小)还是文件数据。pbuf

对应的数据长度为 len。

这两种协议都需要接收端主动发起,所以设计启动函数:

int bXmodem128Start(void);

int bYmodemStart(void);

FlexibleButton

首先配置时填写按键数量。

在 b_hal.h 里是硬件的定义,里面有如下宏是用于定义按键引脚的:

/**

b_mod_button

*/

///<b_mod_button {port, pin, pressed_logic_level}

#if _FLEXIBLEBUTTON_ENABLE

#define HAL_B_BUTTON_GPIO

{{B_HAL_GPIOA, B_HAL_PIN3, 0},\

{B_HAL_GPIOA, B_HAL_PIN2, 0},\

{B_HAL_GPIOC, B_HAL_PIN13, 0},}

调用初始化函数:

int bButtonInit(void);

重新定义回调函数:

void bButtonCallback(void *p);

按键的 ID 则是定义引脚时的顺序,按键的事件则参考如下枚举类型:

typedef enum

{

FLEX_BTN_PRESS_DOWN = 0,

......

FLEX_BTN_PRESS_MAX,

FLEX_BTN_PRESS_NONE,

} flex_button_event_t;