完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
大家使用华大单片机的时候,会发现在SDK开发包的驱动库及样例文件夹中会有DDL和lite两个版本的例程(因为样例也是基于相应的驱动库来开发的,所以本文后面为了称呼方便,我们把驱动库及样例简称为库)。下面两图列出了HC32F005和HC32L136 驱动库及样例文件夹中的两种库。
大家肯定会关心这两种库的区别和在使用的是时候如何来选择的问题。如果有工程师比较早就接触并使用了华大单片机会发现之前只有DDL的库,在2019年的时候出现了lite库。至于这两个库的区别大家记住“lite库是精简高效的库”这句话就可以。 先来段DDL库中uart.c里定义的Uart_EnableIrq()函数 /** ****************************************************************************** ** brief UART通信中断使能函数设置 ** ** param [in] u8Idx通道号,enIrqSel发送or接收中断使能 ** ** retval OK配置成功 **retval ErrorInvalidParameter配置失败 ******************************************************************************/ en_result_t Uart_EnableIrq(uint8_t u8Idx, en_uart_irq_sel_t enIrqSel) { stc_uart_instance_data_t* pstcData = NULL; ASSERT(IS_VALID_CH(u8Idx)); ASSERT(IS_VALID_IRQSEL(enIrqSel)); pstcData = UartGetInternDataPtr(u8Idx); if (NULL == pstcData) { return ErrorInvalidParameter; } switch(enIrqSel) { case UartTxIrq: pstcData->pstcInstance->SCON_f.TCIE = 1u; break; case UartRxIrq: pstcData->pstcInstance->SCON_f.RCIE = 1u; break; case UartFEIrq: pstcData->pstcInstance->SCON_f.FEIE = 1u; break; case UartCtsIrq: pstcData->pstcInstance->SCON_f.CTSIE = 1u; break; case UartPEIrq: pstcData->pstcInstance->SCON_f.PEIE = 1u; break; case UartTxEIrq: pstcData->pstcInstance->SCON_f.TXEIE = 1u; break; default: return (ErrorInvalidParameter); } return Ok; } DDL库更多的是按软件工程的思想来写出的,里面做了非常多的安全措施(如用ASSERT()断言函数来判断数据是否合法,取数据会判断是否有效等),这样在程序出问题的时候会很容易查到问题的根源。当然可靠性增加同样会增加芯片的代码量和编译后生成的文件的大小,并且会降低实现同样功能时芯片的执行效率。DDL库大多数不支持ARM最新编译器ARMCC V6。 我们再看下lite库中uart.c文件中的Uart_EnableIrq()函数 /** ****************************************************************************** ** brief UART通信中断使能函数设置 ** ** param [in] UARTx通道号,enIrqSel发送or接收中断使能 ** ** retval OK配置成功 ** retval ErrorInvalidParameter配置失败 ******************************************************************************/ en_result_t Uart_EnableIrq(M0P_UART_TypeDef* UARTx, en_uart_irq_sel_t enIrqSel) { SetBit((uint32_t)(&(UARTx->SCON)), enIrqSel, TRUE); return Ok; ———————————————— 大家清楚这两种库的区别后,现在我们分别打开两个库中的空模板工程template,进行编译,查看编译结果。先看DDL库ARMCC V5.06编译,编译结果如下图 lite库ARMMCC V5.06编译,编译结果如下图 再看下lite库ARMMCC V6编译,编译结果如下图 通过上面的对比可以看出同样的编译器,lite库的程序会显著比DDL的库的生成的文件小,因为这个空模板本身没有什么功能,节省了这么多的空间已经相当可观。 同样的程序使用不同的编译器会发现 ,ARMMCC V6编译器无论是生成文件的大小,还是编译的速度都有很大的优势。 最后总结 [tr]优点缺点[/tr]
|
||
|
||
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
328浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 23:36 , Processed in 1.093762 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号