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;