打印
[综合信息]

给hc32l13x_ddl_Rev1.9.2 Lite的建议

[复制链接]
1307|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
土司Apple|  楼主 | 2022-4-3 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
嗯,是这样 函数库引入一些面向对象的思想吧 ,我觉得参考一下STM32的HAL库的开发方式应该比较好。
例如串口操作
typedef struct __UART_HandleTypeDef
{
  USART_TypeDef                 *Instance;        /*!< UART registers base address        */

  UART_InitTypeDef              Init;             /*!< UART communication parameters      */

  uint8_t                       *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */

  uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */

  __IO uint16_t                 TxXferCount;      /*!< UART Tx Transfer Counter           */

  uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */

  uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */

  __IO uint16_t                 RxXferCount;      /*!< UART Rx Transfer Counter           */

  __IO HAL_UART_RxTypeTypeDef ReceptionType;      /*!< Type of ongoing reception          */

  DMA_HandleTypeDef             *hdmatx;          /*!< UART Tx DMA Handle parameters      */

  DMA_HandleTypeDef             *hdmarx;          /*!< UART Rx DMA Handle parameters      */

  HAL_LockTypeDef               Lock;             /*!< Locking object                     */

  __IO HAL_UART_StateTypeDef    gState;           /*!< UART state information related to global Handle management
                                                       and also related to Tx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */

  __IO HAL_UART_StateTypeDef    RxState;          /*!< UART state information related to Rx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */

  __IO uint32_t                 ErrorCode;        /*!< UART Error code                    */

#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  void (* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart);        /*!< UART Tx Half Complete Callback        */
  void (* TxCpltCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Tx Complete Callback             */
  void (* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart);        /*!< UART Rx Half Complete Callback        */
  void (* RxCpltCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Rx Complete Callback             */
  void (* ErrorCallback)(struct __UART_HandleTypeDef *huart);             /*!< UART Error Callback                   */
  void (* AbortCpltCallback)(struct __UART_HandleTypeDef *huart);         /*!< UART Abort Complete Callback          */
  void (* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Transmit Complete Callback */
  void (* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart);  /*!< UART Abort Receive Complete Callback  */
  void (* WakeupCallback)(struct __UART_HandleTypeDef *huart);            /*!< UART Wakeup Callback                  */
  void (* RxEventCallback)(struct __UART_HandleTypeDef *huart, uint16_t Pos); /*!< UART Reception Event Callback     */

  void (* MspInitCallback)(struct __UART_HandleTypeDef *huart);           /*!< UART Msp Init callback                */
  void (* MspDeInitCallback)(struct __UART_HandleTypeDef *huart);         /*!< UART Msp DeInit callback              */
#endif  /* USE_HAL_UART_REGISTER_CALLBACKS */

} UART_HandleTypeDef;
定义一层这种对象 对于串口的操作还是很好的,也便于再函数库了解外设的开发方式。既然有函数库咱肯定是更方便用户使用比较好嘛。
还有别串口的校验配置
typedef enum en_uart_mmdorck
{
    UartMskDataOrAddr = 0u,     ///<多机模式时,通过读写SBUF[8]决定帧为数据帧或地址帧
    UartMskEven       = 0x4u,   ///<非多机模式偶校验   
    UartMskOdd        = 0x8u,   ///<非多机模式奇校验   
}en_uart_mmdorck_t;
一眼看上去真是比泰了解第一个是干啥的!是不是就是没有校验?
欢迎交流。新手开车请担待!

使用特权

评论回复
沙发
smartpower| | 2022-4-3 21:53 | 只看该作者
Lite 最重要的目的是编译出的Hex尺寸小。

使用特权

评论回复
板凳
土司Apple|  楼主 | 2022-4-4 09:03 | 只看该作者
意思还是有一般的库么?能否两者兼顾

使用特权

评论回复
地板
wubangmi| | 2022-4-4 17:13 | 只看该作者
Lite版。加那么多东西就不是lite了,另外我堂堂国产MCU,为什么非要向ST看齐呢??就不能有自己的东西??

使用特权

评论回复
5
土司Apple|  楼主 | 2022-4-5 09:43 | 只看该作者
并不是说不能有自己的东西,产品要考虑客户的使用嘛,单纯谈产品就是谈产品。不是非得向他们看齐,主要是看客户的使用嘛,ST不考虑客户的使用感受一样会被抛弃嘛。不要讲什么家国情怀到不了那个高度呢还!

使用特权

评论回复
6
carpsnow| | 2022-4-7 16:02 | 只看该作者

一面是精简,一面是体验,一面是标准

使用特权

评论回复
7
tpgf| | 2022-5-3 10:07 | 只看该作者
这个是一个结构体吗

使用特权

评论回复
8
木木guainv| | 2022-5-3 10:16 | 只看该作者
楼主的注释有点让我迷惑了

使用特权

评论回复
9
磨砂| | 2022-5-3 10:24 | 只看该作者
还有其他什么版本啊

使用特权

评论回复
10
晓伍| | 2022-5-3 10:37 | 只看该作者
得看用户的要求哈

使用特权

评论回复
11
八层楼| | 2022-5-3 10:46 | 只看该作者
这就是取长补短了

使用特权

评论回复
12
观海| | 2022-5-3 10:57 | 只看该作者
自己定义的比较多啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

254

帖子

2

粉丝