• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单机片硬件中断问题

499429803@qq.com 2017-12-21 浏览量:807

STM32每次进入串口接收函数,接收一会就会进入硬件中断。仿真也不知道如何处理?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:16
  • 楼主说的应该是hardfault中断,鉴于题中的“接收一会儿“,几乎可以确定是由于堆栈溢出导致的,检查下接收缓存是否越界。如果使用操作系统,还要留意是否有系统资源未经初始化被使用导致的,系统资源被释放后再次执行释放操作的。有个便捷的办法是观察堆栈指针,发生hardfault后,系统会将打算执行的下一条指令存入寄存器,查看寄存器的地址所对应的代码,找到其前一条执行的语句,便可以推断是哪里导致的堆栈溢出。
电子老工程师 回复了 :是的,见衔接https://so.szlcsc.com/global.html?k=HT7533-7&hot-key=LM2596R-5.0 回复

电子老工程师 回复了 :精度不一样,K比M的好,K是10%与M是20% 回复

  • 可以把串口接收中断关闭掉呀~这样就不会进入接收函数的硬件中断了。

    楼主还是说串口接收函数后一段时间进入了其他中断?可以查明下是什么中断打断了接收函数,看是是否能在接受函数进入时关闭该终端,结束接收函数时开启该中断。

电子老工程师 回复了 :HR10-7R-6SA(73)这个料件从图纸与实物对照很接近了。 回复

电子老工程师 回复了 :尾缀包装区别,产品同一物料
回复

  • 目测如楼上所说,是堆栈或者缓存溢出,试着屏蔽其他代码,只保留串口程序,再看看,或者设置增大串口接收缓存数组的大小,接收一次清零,再试试。

    硬件中断一般就是地址,指针操作不当,修改下程序试试。
    以上,。

电子老工程师 回复了 :封装不一样,JU = 8-contact USON 2x3mm, JK = 8-contact WSON 6x5mm 回复

  • 串口接受溢出中断,不就是串口接受一个字节就产生中断吗
电子老工程师 回复了 :PD100MC0MP1 详细说明 光电二极管820nm 10ns 40°2-SMD,无铅 回复

  • 楼主说的硬件中断是指硬件错误中断吗?讲道理串口接收不可能会发生硬件错误中断的啊,串口接收中断倒是有可能。

电子老工程师 回复了 :http://prd.sws.co.jp/components/cn/detail.php?number_s=61950018 回复

  • 跑的RTOS还是裸奔?
电子老工程师 回复了 :封装不一样,KF33BD-TR:SO-8, KF33BDT-TR:DPAK 回复

  • 上面提到了很多情况了,要按照相应的方法进行排查判断啊,这样才能找到合适的解决方案。
电子老工程师 回复了 :https://www.tracopower.com/products/ten-hs2.pdf 回复

  • 硬件错误中断,而且是串口接收后发生的。很大可能是串口接收缓冲区较小。应该接收后及时处理,或开辟大一点的。还一种可能就是读取的时候,如果用了指针,可能越界了。
电子老工程师 回复了 :规格书命名规格没有具体说明含义。 回复

  • 硬件中断是指进入了硬件错误中断吧,程序不运行了,就停留在那里。看看串口接收缓冲,读写指针是否越界等。
电子老工程师 回复了 :这个型号是原厂98年型号,现在已经停产,没有相关文件无法查询相关信息。 回复

  • stm32的串口接收和发送中断有个特性,就是如果你不主动清除中断或关闭中断,中断会一直产生,不知道是不是造成hard_fault的问题。
电子老工程师 回复了 :0705没找到此封装的晶振 回复
电子老工程师 回复了 :封装: SMD-7050_4P 品牌: YXC扬兴科技 型号: O97050125MEDA4SI, 提供的参数有限,模糊查找的,需要确认一下 回复

  • 可能是接收函数中的接收缓冲溢出的问题,导致程序跑飞,进行硬件错误中断了。
电子老工程师 回复了 :封装: SMD-3215_2P 品牌: TXC(台湾晶技) 型号: 9H03200031 描述:等效串联电阻(ESR):70kΩ 主频:32.768KHz 频率公 回复

  • 没太看明白,如果配置了接收中断,在接收到数据后就会触发中断的,除非是配置的别的中断,比如接收缓存空或空闲中断,才会出现过一会不定时的进入硬件中断。
电子老工程师 回复了 :https://www.nxp.com/docs/en/brochure/75017524.pdf 回复

  • 一般都会进入接收中断的,但是硬件中断并无法仿真   可能是堆栈太小了

  • 关于中断:

    STM32 可支持 68 个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节 PRI_n(8 位,但是 STM32 中只使用 4 位,高 4 位有效),每 4 个通道的 8 位中断优先级控制字构成一个 32 位的优先级寄存器。 68 个通道的优先级控制字至少构成 17 个 32 位的优先级寄存器。
    4bit 的中断优先级可以分成 2 组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,
    4bit 一共可以分成 5 组
    第 0 组:所有 4bit 用于指定响应优先级;
    第 1 组:最高 1 位用于指定抢占式优先级,后面 3 位用于指定响应优先级;
    第 2 组:最高 2 位用于指定抢占式优先级,后面 2 位用于指定响应优先级;
    第 3 组:最高 3 位用于指定抢占式优先级,后面 1 位用于指定响应优先级;
    第 4 组:所有 4 位用于指定抢占式优先级。
    所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。
    当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义 2 个优先级。
    有几点需要注意的是:
    1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;
    2)抢占式优先级别相同的中断源之间没有嵌套关系;
    3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

电子老工程师 回复了 :无铅环保 回复

相关问题

问题达人换一批

单机片硬件中断问题