This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于中断问题。。

Other Parts Discussed in Thread: HALCOGEN

您好!

 1. 开发板,本人在写SCI中的时候,_enable_interrupt_();函数报警告,如果去掉这个函数 中断不运行,_enable_interrupt_()函数在头文件中 sys_core.h能找到。但对应的.C源文件,没有找到啊。。头文件源文件是通过HAL自动生成的。请问这个函数的定义的地方,难道是HAL有bug自动生成的缺少了 对应的源文件吗?或者是哪个地方有错误。

2.请问scilin,与sci是不是同一个管脚。。。就是两种方式呢?scilin更先进些?

  谢谢

  • 1. 你把函数写错了,应该是:_enable_interrupts();

    2. scilin这个模块可以做SCI用也可以做LIN用,但同一时间,只能二选其一。

  • 你好!

      函数没写错,_enable_interrupt_();这个函数正确,在sys_core.h头文件中有函数void _enable_interrupt_(void);

    现在的问题是我在HAL自动生成的代码中,没有源文件sys_core.c,代码报告警告。想知道 为什么HAL生成的代码中没有源文件sys_core.c

    而我的中断程序必须得加上这个函数_enable_interrupt_(),不加这个函数 中断不执行!

       专家们  指点指点!

    谢谢

  • 补充::用函数_enable_IRQ();代替函数_enable_interrupt_(),中断也可以执行,并且不报警告了。。。请问_enable_interrupt_()和_enable_IRQ()函数是什么意思啊,每个函数都没有定义呢。。。所有的中断程序都得添加这个两个函数??不需要自己改?

  • _enable_IRQ()是使能IRQ中断,_enable_FIQ()是使能FIQ中断。

    如果两个中断都要使能,就要调用_enable_interrupts(). 注意,一定要有“s”。

    另外,sys_core的源文件不是C,而是asm,汇编写的。

  • 帮你查了一个多小时了,给你搞清楚了。

    /* Enable CPU Interrupts - FIQ & IRQ */
    _enable_interrupt_();

    是这个没毛病的。不带什么s

    你说的头文件对应的.c 你那是一般情况,如果用C实现的一般这么搞的。

    不知道你用的哪个单片机,我们以这个文件夹为例

    C:\ti\Hercules\HALCoGen\v04.07.00\drivers\TMS570LS20216SZWT\SYSTEM570v000

    这里面的sys_core.h 定义了上面那个使能中断函数。

    那么实现在哪儿呢?一般都会觉得在.c

    其实你打开这个文件夹会看到挨着有个扩展名不同的.asm

    sys_core.asm

    在最后一行找到跟这个定义一致的汇编实现。