在HAL要在库中显示的级别的微妙级别的延迟怎么弄

HAL库的超时机制 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 657|回复: 8
HAL库的超时机制
在线时间12 小时
主题帖子好友
中级会员, 积分 201, 距离下一级还需 299 积分
中级会员, 积分 201, 距离下一级还需 299 积分
HAL库的超时机制,好像都是采用循环判断的方式(如下面代码中的红色部分),这对于低功耗控制和程序的时序控制太不利了,如果超时比较长,
且该段代码在高优先级的任务中执行,则低优先级的任务在这段超时时间内也无法得到执行。此外,超时单位是1ms一个tick(默认用SYSTICK定时器产生),这个可以修改吗?
static HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
&&/* Wait until flag is set */
while((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
& & /* Check for the Timeout */
& & if(Timeout != HAL_MAX_DELAY)
& &&& if((Timeout == 0U)||((HAL_GetTick() - Tickstart ) & Timeout))
& && &&&/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
& && &&&CLEAR_BIT(huart-&Instance-&CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
& && &&&CLEAR_BIT(huart-&Instance-&CR3, USART_CR3_EIE);
& && &&&huart-&gState&&= HAL_UART_STATE_READY;
& && &&&huart-&RxState = HAL_UART_STATE_READY;
& && &&&/* Process Unlocked */
& && &&&__HAL_UNLOCK(huart);
& && &&&return HAL_TIMEOUT;
&&return HAL_OK;
在线时间578 小时
ST金币1688
主题帖子好友
楼主想改到什么级别?理论是可以改掉的,ms级别我感觉已经满足需求了吧。
在线时间380 小时
ST金币1613
主题帖子好友
本帖最后由 MrJiu 于
09:22 编辑
超时的时间自己可以控制的啊,不是在调用函数的时候,有一个超时参数的调入么???还有,这个超时指的是你允许这段代码执行最大时间。。。。如果有高优先级的打断了,你就把这个超时参数设置大一点呗!!!!这就是一个估计值!!!这个和低功耗啥的没啥关系吧???
在线时间50 小时
ST金币1049
主题帖子好友
金牌会员, 积分 1335, 距离下一级还需 3665 积分
金牌会员, 积分 1335, 距离下一级还需 3665 积分
要做低功耗,最好用LL库,而不是HAL库。
在线时间50 小时
ST金币1049
主题帖子好友
金牌会员, 积分 1335, 距离下一级还需 3665 积分
金牌会员, 积分 1335, 距离下一级还需 3665 积分
再说了,你可以优化它的,HAL只是最通用的代码,绝对不是最优化的代码。
在线时间12 小时
主题帖子好友
中级会员, 积分 201, 距离下一级还需 299 积分
中级会员, 积分 201, 距离下一级还需 299 积分
超时的时间自己可以控制的啊,不是在调用函数的时候,有一个超时参数的调入么???还有,这个超时指的是你 ...
怎么和功耗没关系呢?这段时间内,CPU就在空转呀,本来可以进入低功耗模式的,但现在要等超时时间到。超时时间是自己可以控制,但有些地方本来就要求有足够长的超时时间,不能随随便便改短啊。
在线时间380 小时
ST金币1613
主题帖子好友
怎么和功耗没关系呢?这段时间内,CPU就在空转呀,本来可以进入低功耗模式的,但现在要等超时时间到。超 ...
超时哪有等待??你把超时搞错了吧???超时指的的是:比如你设定10ms,但是由于一些原因,超过了10ms,就会打断,直接跳出来,但是如果设定完了,那就直接退出,又不会说非要等待到10ms,这个过程CPU哪里空转了!!!!
在线时间12 小时
主题帖子好友
中级会员, 积分 201, 距离下一级还需 299 积分
中级会员, 积分 201, 距离下一级还需 299 积分
超时哪有等待??你把超时搞错了吧???超时指的的是:比如你设定10ms,但是由于一些原因,超过了10ms, ...
我贴出的代码的那个while(1)循环就是CPU在空转啊,如果它是在高优先级的任务中执行,这段时间内低优先级任务是无法得到执行的。
在线时间380 小时
ST金币1613
主题帖子好友
我贴出的代码的那个while(1)循环就是CPU在空转啊,如果它是在高优先级的任务中执行,这段时间内低优先级 ...
你这里的while(1)判断的是状态,和超时一点关系都没有,if((Timeout == 0U)||((HAL_GetTick() - Tickstart ) & Timeout))这个才是判断超时的!!!!状态采用的查询方式,肯定要等寄存器的状态执行完了才能结束!!!
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by大家都是怎么学HAL库函数的啊? - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 20333|回复: 63
大家都是怎么学HAL库函数的啊?
在线时间201 小时
主题帖子好友
金牌会员, 积分 2727, 距离下一级还需 2273 积分
金牌会员, 积分 2727, 距离下一级还需 2273 积分
看了一天HAL的库函数使用说明,感觉晕晕的,主要是那个什么handle,没搞明白到底这个怎么个运行流程,是不是学这个HAL要有一些C++的基础啊?哪位有经验可以指点下么?先谢了!
20:47 上传
点击文件名下载附件
4.48 MB, 下载次数: 8608
在线时间93 小时
主题帖子好友
金牌会员, 积分 1326, 距离下一级还需 3674 积分
金牌会员, 积分 1326, 距离下一级还需 3674 积分
本帖最后由 任风吹吹 于
12:26 编辑
标准库是标准的C语言思想,即提供外设接口,应用调用对应的接口就可以了,而HAL向面向对象的思想靠拢,学过 ...
HAL库是将数据整合了下,变成句柄,但数据和功能还是分离的,数据与功能的关联点是在接口函数的第一个参数一般为句柄,然后再就是中断回调到weak函数,用户需要用到这个回调时就自己重载这个回调函数,这个就是HAL的一般情况,但严格来说,这还不是真正的面向对象,真正的面向对象比如C++,是将数据与功能一起封装在对象内,weak就相当于虚函数,在实例化时需要重载。OOP的操作都是以对象开头的,而HAL还是以接口开始,只不过在第一个参数传入句柄数据而已,两者结果一样,但后者HAL还是数据与功能分离的,不像对象,HAL严格来说,相比原来的标准库应该算是半对象化了。
以上是个人理解,非喜勿喷!
在线时间211 小时
ST金币1219
主题帖子好友
金牌会员, 积分 3186, 距离下一级还需 1814 积分
金牌会员, 积分 3186, 距离下一级还需 1814 积分
HAL效率会更高么?代码会不会更占空间?
在线时间164 小时
主题帖子好友
金牌会员, 积分 2465, 距离下一级还需 2535 积分
金牌会员, 积分 2465, 距离下一级还需 2535 积分
C++的基础 要的,弄块开发板练练
在线时间249 小时
ST金币2473
主题帖子好友
金牌会员, 积分 3670, 距离下一级还需 1330 积分
金牌会员, 积分 3670, 距离下一级还需 1330 积分
在线时间3 小时
主题帖子好友
初级会员, 积分 67, 距离下一级还需 133 积分
初级会员, 积分 67, 距离下一级还需 133 积分
资料很好。很有用的
在线时间83 小时
主题帖子好友
高级会员, 积分 956, 距离下一级还需 44 积分
高级会员, 积分 956, 距离下一级还需 44 积分
啃…………
在线时间133 小时
主题帖子好友
金牌会员, 积分 1194, 距离下一级还需 3806 积分
金牌会员, 积分 1194, 距离下一级还需 3806 积分
这个多练练不就行了。熟能生巧。
在线时间345 小时
ST金币6182
主题帖子好友
hal有英文参考资料好好看下。
blank.png (120 Bytes, 下载次数: 2)
09:02 上传
blank.png (120 Bytes, 下载次数: 1)
09:02 上传
blank.png (120 Bytes, 下载次数: 4)
09:02 上传
blank.png (120 Bytes, 下载次数: 5)
09:02 上传
blank.png (120 Bytes, 下载次数: 4)
09:02 上传
blank.png (120 Bytes, 下载次数: 1)
09:02 上传
blank.png (120 Bytes, 下载次数: 5)
09:02 上传
blank.png (120 Bytes, 下载次数: 3)
09:02 上传
blank.png (120 Bytes, 下载次数: 7)
09:02 上传
blank.png (120 Bytes, 下载次数: 1)
09:02 上传
在线时间201 小时
主题帖子好友
金牌会员, 积分 2727, 距离下一级还需 2273 积分
金牌会员, 积分 2727, 距离下一级还需 2273 积分
这个多练练不就行了。熟能生巧。
资料有限,没理清楚这个库的结构是怎样的
在线时间201 小时
主题帖子好友
金牌会员, 积分 2727, 距离下一级还需 2273 积分
金牌会员, 积分 2727, 距离下一级还需 2273 积分
HAL效率会更高么?代码会不会更占空间?
我也同有此疑问……
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by使用hal库如何设置STM32的向量表位置? - 开发工具和评估板 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 443|回复: 2
使用hal库如何设置STM32的向量表位置?
在线时间3 小时
主题帖子好友
初级会员, 积分 52, 距离下一级还需 148 积分
初级会员, 积分 52, 距离下一级还需 148 积分
现在项目想要使用rt-thread+ hal库,但rt-thread中的例程用的是3.5标准库,在修改的过程中遇到如下代码,但没有在hal库中找到对应的方法。
void NVIC_Configuration(void)
#ifdef&&VECT_TAB_RAM
& & /* Set the Vector Table base location at 0x */
& & NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else&&/* VECT_TAB_FLASH&&*/
& & /* Set the Vector Table base location at 0x */
& & NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
为了保证其原功能不变,我该如何修改呢?
(MCU是 STM32F103)
在线时间1487 小时
ST金币8123
主题帖子好友
直接使用下面的代码偏移
&&SCB-&VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
复制代码
在线时间3 小时
主题帖子好友
初级会员, 积分 52, 距离下一级还需 148 积分
初级会员, 积分 52, 距离下一级还需 148 积分
直接使用下面的代码偏移
已经找到这段代码的出处 system_stm32f1xx.c
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered byHAL库,最全面的HAL库文章 - 电子工程世界网
在电子工程世界为您找到如下关于“HAL库”的新闻
HAL库资料下载
7.4.5 模拟器上的Audio HAL实现 /403
7.5 Android RIL实现 /404
7.5.1 Android RIL构架 /404
7.5.2 radiooptiongs实现 /407
7.5.3 libril库实现 /409
7.5.4 reference-ril库实现 /415
7.5.5 RILD守护进程实现 /418
7.5.3 libril库实现 /409
7.5.4 reference-ril库实现 /415
7.5.5 RILD守护进程实现 /418
7.5.6 request流程分析 /423
7.5.7 response流程分析 /427
7.6 Android Sensor HAL实现 /434
7.6.1 Android Sensor构建 /434...
libril库实现 /409
7.5.4 reference-ril库实现 /415
7.5.5 rild守护进程实现 /418
7.5.6 request流程分析 /423
7.5.7 response流程分析 /427
7.6 android sensor hal实现 /434
7.6.1 android sensor构建 /434
7.6.2 sensor...
[拉普兰德K60底层库]LPLD_OSKinetis_V2.2版,该程序为拉普兰德开发的试用于kinetis系列芯片,基于IAR开发平台,用c语言,包含常用模块GPIO,ADC,FTMLPLD_OSKinetis_V2\\lib\\common\\alloc.c
.................\\...\\......\\assert.c...
了简单的设备驱动程序接口,应用程序使用设备驱动程序与底层硬件之间进行通信。HAL应用程序接口和ANSIC标准库结合在一起,这样用户可以使用C语言库函数来访问Android文件系统。下图是其直观的概念: [pic]
从图中,我们可以看到HAL是基于Linux Kernel与Libraries和AndroidRuntime之间。也就是说,HAL是底层硬件设备驱动程序暴露...
相连的I/O 接口,在软件工程中,需要用户编写I/O 接口程序对外设进行初始化,设置相应的外设寄存器,这样的工作在每次新建一个工程后,都得重复进行,因此增加了开发的成本。利用 Altera 公司提供的Component Editor 工具可以设计符合时序要求的外设接口,并且可以将用户开发驱动程序与Nios II HAL(硬件抽象层)系统库集成在一起,形成Nios II 的接口组件,在系统生成...
stm32f4驱动详解,HAL库文件详解
详细讲解了每个封装库的使用方法...
详细说明:PDIUSBD12USB接口芯片的实验资料包, 包括以下内容 D12驱动 PDIUSBD12 PC机驱动程序,分为Win2k_Xp和Win98 EasyUSB 读写PDIUSBD12的API函数(Win32标准动态库) PCTest PC机端演示软件,提供可执行文件PCTest.exe及源程序 D12 For uCos-II PDIUSBD12 设备端演示软件 ZLG_D12.pdf...
NiosII的软件开发手册,包括了niosII IDE开发环境的介绍,HAL系统库的介绍以及使用HAL进行程序开发...
Android_Framework框架分析Android framework analysis (partI zt)Android Framework 分析 (一)1.目录树/framework/base/api /framework/base/awt/framework/base/build/framework/base/camera关于camera的HAL...
HAL库相关帖子
,每个支持2.4MSPS采样率,交替采样模式下能达到7.2MSPS
正好手里有一个STM32L452的NULEO开发板,STM32L542也有3个独立ADC,每个ADC支持5.33MSPS采样率
如果3个交替采样是不是能达到16MSPS的高速采样?想想都激动
查了一次交替采样资料基本都是STM32F系列,没有STM32L的
没有没关系,咱可以自己写,好在STM32的库很强大,可以实现“无...
、CALL BACK,害人得 ...[/quote]
ADC_RegularConversion_Interrupt例程应该和HAL_ADC_IRQHandler中断有关
每执行一次ADC_RegularConversion_Interrupt都要做很多判断还要清中断标志
现在只能考虑DMA,为什么使用DMA例程读到的数据会是乱的应该和使用库没有关系
估计还有哪些地方我还没弄明白,再试...
;& & 然后在pyp库的外设底层文件里面加进去STM32F765这个型号。比如ADC.c,IIC.c,反正就你所要使能的外设,都得改。make的过程有出现错误,根据提示的错误做出相应的修改,错误也就慢慢少了,mpy底层方面基本都配置好了,在mpconfigboard.h文件配置使能外设即可。
& & 在make到ST的hal库的时候,有一个文件提示...
些时候通过选择较低频率的时钟源,在满足正常工作条件下,是可以有效降低功耗的。虽然函数库HAL_UCS.c/h,有完整的各个控制函数,但我觉得对于这一章还是对寄存器直接操作比较简单,因为函数太短、太多了。
统一时钟系统(UCS)的简介
& && && && &Unified Clock System,UCS。合理...
& && &好吧,放着好好的window下的IDE不用,确实点个灯还用linux下怼得有点蛋疼。
& && &上一个帖子搭建了开发环境,本贴楼主就利用该开发环境来点个灯。
& && &当然首先得把相关的工程文件拷贝过来,下载官方的hal库源码,然后把相关文件拷贝到自己的文件...
独立压缩包:/s/1sl1nphj 视频盘,《手把手教你学STM32-M4》视频
FreeRTOS视频55讲下载地址: /s/1qXF2alQ
HAL库例程下载地址:/thread--1.html
UCOS/EMWIN/LWIP视频下载链接:
【百度网...
居然马上换成组合。卧槽,能不能分散分散再组合啊。这尼玛我还得拆。。。垃圾设计。
接着垃圾。看手册
要的只是个脚配置,一个脚用了4个bit来配置,上面那个Mode垃圾,居然组合出来8bit!! 我擦,还能垃圾一点吗?意思是我还得拆开来分别给4bit配置?!
槽,好垃圾的库,居然有人搞有人学。HAL更垃圾,不说了。
麻麻桑,换技师!
此内容由EEWORLD论坛网友freebsder...
文件,通常是MCU底层的寄存器的定义。
它把它和上面的底层构件层,分开。他希望,通过这个MCU头文件来区分不同的MCU,然后所有这些之上,再来一个通用的(也就是满足各家MCU平台,板子都可用的)一个构件抽象HAL。
这其实也是很多家MCU的库,例程很常用的一个方法。
但是,我恰恰认为,这一些,应该直接被包含在一个完整的BSP里。 说起来,这种 以寄存器为目标的封装,在我看来...
大家可能知道,MicroPython的STM32分支中,HAL库的更新总是比较慢,落后ST官方通常有几个月时间。今天,总算又更新了,更新后的版本如下:
- F4 V1.16.0
- F7 V1.7.0
- L4 V1.8.1
主要的改进在于SDCard驱动,可以用块号代替字节地址。
此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处...
提供了一个标准的硬件抽象层(HAL), CMSIS-CORE集成在各种微处理器厂商提供的设备驱动程序库里,被各种开发工具套件支持。
除了CMSIS-CORE, CMSIS还包含一个DSP软件库(CMSIS-DSP)。这个库提供了为Cortex-M4 和 Cortex-M7优化过的各种DSP函数,当然也支持其他的Cortex-M系列处理器。CMSIS-CORE 和 CMSIS-DSP库都是免费...
你可能感兴趣的标签
热门资源推荐}

我要回帖

更多关于 数据库事务的隔离级别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信