首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不能在stm32 F407VG的ISR中使用HAL_Delay()吗

在stm32 F407VG的ISR中不建议使用HAL_Delay()函数。ISR(中断服务程序)是一种特殊的函数,用于响应硬件中断。ISR应该尽可能地快速执行,以确保及时响应硬件事件。HAL_Delay()函数是一个延时函数,会阻塞程序的执行,直到指定的时间过去。在ISR中使用HAL_Delay()函数会导致中断处理时间延长,可能会影响系统的实时性和稳定性。

在ISR中,应该尽量避免使用任何可能引起延时的函数。如果需要延时操作,可以考虑使用定时器中断或其他非阻塞的延时方法来实现。另外,ISR中应该尽量避免执行复杂的操作,以确保中断处理的快速完成。

对于stm32 F407VG开发,可以考虑使用其他方法来实现延时操作,例如使用定时器中断、SysTick定时器或者基于硬件的延时方法。具体选择哪种方法取决于应用的需求和硬件平台的支持。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算服务:https://cloud.tencent.com/product/cvm
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/tencent-metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

stm32开发教程_单片机STM32

上一段话包含两层意思:1、在不熟悉STM32情况下,如何入手学习相关技术知识。2、在不熟悉STM32情况下,作为公司在职开发人员,如何快速进入STM32相关项目开发工作,保证开发效率。...STM32有一个全速功能USB模块,其串行接口引擎需要一个频率为48MHz时钟源。...另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出2分频、HSI、HSE、或者系统时钟。   系统时钟SYSCLK,它是供STM32绝大部分部件工作时钟源。...在以上时钟输出,有很多是带使能控制,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应时钟。   ...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

78720

基于STM32CUBEUSB鼠标键盘二合一

感兴趣就看一眼,没兴趣就算了。 前面两篇文章分别说了如何实现基于STM32USB鼠标和基于STM32USB键盘。这篇文章,我们试着同时在一个USB设备上,实现USB鼠标与键盘二合一。...花一份钱,实现两样东西,它不香? 这里要说一下,实现鼠标键盘二合一功能,方法有多种,这里只说其中一种。 少废话,开始干!...第二,修改usbd_hid.c配置集合(USBD_HID_CfgFSDesc)。如下图所示,框住地方是个宏定义。配置集合长度,由之前34,变为41. ? 端点个数,由1变成2....STM32CubeMX工具自动生成工程里,报告描述符是鼠标的。现在我们要实现是键盘与鼠标二合一,要修改核心位置就是报告描述符这里。 简单来说,就是把前面两个例程报告描述符合二为一。...在USB协议,报告ID默认是数组第一个元素。明白了这一点,我们可以去修改main.c文件了。 第五,添加头文件,并定义相关数组。

2.3K41
  • STM32MP157D-DK1 STM32CubeID使用与M核开发

    STM32MP157具有A7内核核M4内核,前面介绍一些文章,都是在A7内核上进行,本篇来介绍M4内核开发,以及开发时要用到STM32 CubeIDE软件使用。...exe安装,这里展开介绍。...,关联成功,就会变成绿色方块: 可以在下载位置查看下载文件: 1.2 配置引脚 使用LEDLD7进行LED控制,根据文档,对应是PH7引脚,高电平点亮: 搜索PH7引脚,设置为Output模式...,LD7_Pin,GPIO_PIN_SET); HAL_Delay(500); HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_RESET); HAL_Delay...lib/firmware目录,添加可执行权限,然后使用如下指令即可运行M4内核程序: #加载固件 echo 01_LED_CM4.elf >/sys/class/remoteproc/remoteproc0

    18810

    STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

    Priority Group是优先级分组 STM32以4个比特位表示中断抢占优先级和响应优先级。...,用过STM32应该都知道,单片机再执行中断服务函数之前,Contex-M4内核先将现在使用寄存器和主程序中断点地址压入堆栈(保护现场)。...,我们在使用STM32CubeMX开发过程使用任何中断都不需要去关心标志位问题。...百度一下HAL_Delay函数卡死,相关帖子层出穷,真正说出原因并提供解决方法几乎没有。但其实原因并不难,进来HAL_Delay函数看看就知道。...带着这个问题我们回到STM32CubeMX重新找到NVIC。 这时候我们注意到在默认使能中断里面有一个System tick中断,这就是给HAL_Delay函数提供时基定时器中断了。

    3.4K21

    1.使用GPIO点亮LED

    开发环境 NUCLEO-G071RB开发板一块 stm32cubemx,keil开发环境 用stm32cubemx生成MDK工程 新建工程并选择芯片 配置时钟 这次工程使用哦内部时钟源即可,...所以使用默认时钟配置即可 关于时钟配置可以看这篇:stm32时钟配置 配置引脚 硬件电路如下 这里使用PC8作为led引脚,设置为输出脚 生成工程 配置好工程路径,开发环境后,就可以生成代码了...在MDK编写代码 在main.c中找到主程序while循环 添加代码 HAL_Delay(200); HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8); 下载程序 工程配置...按钮就可以了 代码分析 GPIO输出函数 HAL_GPIO_TogglePin(GPIOx, GPIO_Pin); GPIOx: GPIO端口,GPIOA~GPIOH GPIO_Pin: 该端口对应Pin...脚数 实现GPIO口状态翻转 HAL_Delay(); 延时函数,堵塞式延时,单位毫秒ms,输入值长度uint32_t。

    1.1K20

    用GCC开发STM32入门二

    之前从网上下载了一份用GCC开发stm32程序,也是用stm32库函数编程,启动文件是startup_stm32f10x_hd.s,链接脚本文件是从gcc_ride7拷贝出stm32f10x_flash_extsram.ld...这条语句使用了__attribute__ ((section(".stackarea"))) 把数组定位在 了.stackarea这个段。...,把所有目标文件相应段连接到一起,并把目标文件“变量地址”“函数地址”重定位至正确地址空间; 比如,对于stm32来说向量表,.text和.rodata就应该放到从0x0800 0000开始..._etext = .; } > FLASH 按.isr_vector, .text, .rodata顺序排列正文段内容;回忆前述VectorTable[]数组就被定为与.isr_vector段...但向量表不是应该从0x0000 0000开始?原来stm32可以通过boot0、boot1引脚配置将 flash映射到0x0000 0000处。具体可参考stm32数据手册。

    1.8K20

    STM32CubeMX-27(补充) | 系统滴答定时器Systick使用

    本篇文章主要介绍STM32Systick定时器使用以及HAL_Delay函数原理。 1....配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core配置RCC; 如果使用默认内部时钟(HSI),这一步可以略过; 这里我都使用外部时钟: ?...HAL_IncTick函数会把当前系统定义计数值变量递加,在stm32l4xx_hal.c文件,实现如下: ?...编写用户代码 HAL库还定义了一个函数 HAL_GetTick(),使用此API可以获取到当前系统计数值,定义如下: ? 接下来使用此API来编写LED闪烁程序。...补充 —— HAL_Delay实现原理 最开始使用HAL库时候,觉得 HAL_Delay 简直太方便了,其实 HAL_Delay 也是依靠系统时基信号来实现,在stm32l4xx_hal.c文件

    5.2K20

    BME280传感器与STM32 Blue Pill连接并使用STM32CubeIDE

    在本教程,我们将学习如何将 BME280 传感器与 STM32 Blue Pill 连接,并使用 HAL 库在 STM32CubeIDE 对其进行编程。...首先,我们将简要介绍 BME280 传感器,然后将其与我们 STM32 接口,并使用 STMCube IDE 对其进行编程以测量温度、压力和湿度。...我们使用与上表中指定连接相同连接。 图片 STM32 Blue Pill BME280 代码带OLED 我们将使用 STM32Cube IDE 对我们 STM32 板进行编程。...首先,我们必须将我们 Blue Pill STM32 与 ST-Link 编程器连接起来。我们将使用 ST-Link V2。 图片 这将在我们计算机和我们 STM32 板之间提供一个接口。...接下来按 IDE RUN 按钮。“编辑配置”窗口将打开。单击“确定”。 片刻后,代码将成功发送到STM32板。否则,请按 STM32 开发板上 RESET 按钮。

    1.4K60

    一种Cortex-M内核精确延时方法(ns级别)

    本文介绍一种Cortex-M内核精确延时方法 ? 前言 为什么要学习这种延时方法?...很多裸机教程使用延时函数又是基于SysTick,这样一来又难免产生冲突。 很多人会说,不是还有定时器,定时器计时是超级精确。...这点我否认,但是假设,如果一个系统,总是进入定时器中断(10us一次/1us一次/0.5us一次),那整个系统就会经常被打断,线程进行就没办法很好运行啊。...,不过好在,HAL_Delay()是一个弱定义,我们可以重写这个函数实现,那么,采用内核延时当然是最好办法啦(个人是这么觉得)当然你有能力完全用for循环写个简单延时还是可以。...(218000000) 后记 其实在ucos-iii 源码,有一个功能是测量关中断时间功能,就是使用STM32时间戳,即记录程序运行某个时刻,如果记录下程序前后两个时刻点

    1.8K10

    stm32编程入门书籍_STM32开发板

    Cortex-A系列主要面向一些复杂应用,用来运行一些操作系统,运用到各类消费电子;Cortex-R系列主要面向实时系统,运用到军事航天;Cortex-M系列主要面向微控制领域,为如今工业控制系统、...STM324个库 先给结论:从ST公司发展方向和主推库来讲,目前使用HAL是最正确选择。...每个STM32系列100多个片段演示了如何以最小内存占用有效地使用STM32外围设备。STM32Snippets目前官方只提供:STM32F0和L0示例代码包。...HAL_Delay(1000); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ 4.3 烧写代码流程 4.4 运行结果...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.4K20

    stm32cubemx使用教程pdf_库乐队完全新手教程

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速学会各个模块使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6...STM32每个通用定时器都有独立4个通道可以用来作为:输入捕获、输出比较、PWM输出、单脉冲模式输出等。...STM32定时器除了TIM6和TIM7(基本定时器)之外,其他定时器都可以产生PWM输出。...0:关闭使能 1:打开使能 5、输出电平信号 TIM定时器四路通道TIMx_CHx输出PWM 摘自: 《STM32文参考手册》254页 通用定时器框图 STM32定时器输出通道引脚 具体不同定时器对应引脚在对应芯片数据手册引脚说明...(1); } HAL_Delay(200); /* USER CODE END 3 */ } 或者直接修改CCRx寄存器值 htim3.Instance->CCR1 = 300;

    67710

    基于STM32L431设计云端绿化管理系统(ESP8266+腾讯物联网云平台)

    小熊派开发板本身自带例子程序也比较丰富,自带例子里采用云平台是华为物联网云平台,工程比较庞大使用了LiteOS操作系统。...本文里工程是重新编写代码,使用裸机完成项目功能,没有跑操作系统,MQTT协议和ESP8266驱动代码都是重新编写,框架、逻辑比较清晰,代码量也较少,适合初学者入门学习。...用到功能属性: 小程序面板配置: 手机微信小程序运行效果: 串口打印提示: 四、STM32源代码 STM32代码主要分为以下几个部分: 1....这个MQTT协议不是使用ESP8266本身SDK,是根据MQTT协议自己实现,所以如果使用其他网卡,移植也很方便,不挑网卡设备。 3....程序模板是使用CubeMX生成

    93120

    用GCC开发STM32入门一(使用官方库)

    先说说为什么需要用GCC开发stm32吧,作为一名编程方面的爱好者,又是搞嵌入式,总是用现成IDE,感觉很不舒服,虽然IDE能很大提高咱们工作效率,可是作为业余学习研究,还是越熟悉底层越好...比如如何搭建环境,如何使用编译器和编写makefile,这些搞过linux开发都知道,而且 linux环境下没那么多IDE可用,而且也没必要用IDE.还有一个原因是,喜欢黑色dos窗口下编程感觉,...cygwin+skyeye+gcc 2.安装cygwin软件,安装步骤按照书上进行,需要说明是 :在进入cygwin setup-select packages界面时,必须选中devel包gcc4...首先将leeos_tools_for_cygwin.tar.gz复制到D:\cygwin\usr(我把cygwin装在了D盘,具体看自己情况),然后解压缩为leeos_tools_for_cygwin...以下是我整理了一份自己使用模板:makefile (LDSCRIPT) OBJS= main.o .PHONY: clean all:images images: (BINARY).hex (BINARY

    2.7K10

    【STM32F429】第6章 ThreadX操作系统移植(IAR)

    mod=viewthread&tid=99514 第6章 ThreadX操作系统移植(IAR) 本章节将为大家介绍ThreadX内核IAR方式移植和设计框架,理论上建议初学者直接学习,因为本章节涉及到知识点很多...但是本章工程模板框架一定要学习。 虽然本章节是以我们开发板为例进行移植,但是教会大家如何移植到自己板子上以及移植过程注意事项是本章节重点。...需要周期性处理程序bsp_ProPer1ms,对应裸机工程调用SysTick_ISR。这个实现非常重要,这样之前裸机里面使用API,就可以直接在ThreadX里面直接调用。...stm32f4xx_hal_timebase_tim.c ThreadX系统时钟节拍默认是用滴答定时器,STM32HAL库时间基准也是用滴答定时器。...替换HAL函数。因为HAL缺省函数依赖于Systick中断,如果在USB、SD * 卡中断中有延迟函数,则会锁死。

    70320

    14个最常见Kafka面试题及答案

    Kafka服务器可以接收到消息最大大小是1000000字节。 6、解释KafkaZookeeper是什么?我们可以在没有Zookeeper情况下使用Kafka?   ...Zookeeper是一个开放源码、高性能协调服务,它用于Kafka分布式应用。   ,不可能越过Zookeeper,直接联系Kafka broker。...broker什么时候离开ISR?   ISR是一组与leaders完全同步消息副本,也就是说ISR包含了所有提交消息。ISR应该总是包含所有的副本,直到出现真正故障。...Kafka信息复制确保了任何已发布消息不会丢失,并且可以在机器错误、程序错误或更常见些软件升级中使用。 12、如果副本在ISR停留了很长时间表明什么?   ...如果首选副本不在ISR,控制器将无法将leadership转移到首选副本。 14、有可能在生产后发生消息偏移?

    7.8K10

    STM32】STM32CubeMX教程二–基本使用(新建工程点亮LED灯)

    CubeMx使用教程一–安装教程》 前期准备: 1、STM32硬件(我是STM32F407ZE和STM32F103ZE) 2、STM32CubeMx软件、 IDE Keil(MDK-ARM)软件...2: 这里只需要把我们LED对应引脚设置为GPIO_Output即可 2时钟源设置 其实也就是32时钟树框图让你配置 默认时钟是使用内部RC振荡器(HSI) 如果不懂的话请看《【STM32】...将HAL库所有.C和.H都复制到所建工程 优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX时候便会很方便 缺点: 体积大,编译时间长(很长) 只复制所需要.C和.H...自行选择方式即可 具体流程5: 然后点击GENERATE CODE 创建工程 创建成功,打开工程 具体流程6:while循环添加下面两行代码即可 HAL_Delay(500);...基本使用介绍完了 ,接下来会更新CubeMX和HAL库配置STM32UART ADC DMA 定时器 PWM 等等 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    1.8K30

    STM32高级开发——链接器与启动文件

    至于其中各个.c文件产生能在单片机储存排列顺序和地址位置,在最后我们链接器工作产生.map文件是有显示,如下面从样例工程.map文件复制片段: .isr_vector 0x08000000...当然排除我见识少,没见过特殊。...在我们实际工程建立及编写,我们使用都是从别处找来ld文件,在样例工程.ld文件只要在内存大小堆栈等位置上根据stm32具体型号稍作修改就可以使用了。...启动文件 很多刚接触stm32不久童鞋对stm32启动文件印象大多就是教程里一句话:启动文件就是stm32在执行main函数前将系统初始化并把PC(即程序计数器,也就是当前执行代码位置指针)...确实在KEIL或IAR之类集成开发环境我们不必关心启动文件存在,但是在我们gcc使用,我们就需要去理解这个文件了。

    85830
    领券