美文网首页
FreeRTOS+STM32F103 中断测试 卡死

FreeRTOS+STM32F103 中断测试 卡死

作者: xuezimu | 来源:发表于2018-09-02 19:11 被阅读0次

在使用原子的战舰开发板进行中断测试实验时发现,两个定时器只print一下就挂掉了,经过分析发现是SysTick_HandlerxPortSysTickHandler的冲突问题;
在上一篇移植的时候,有一个操作是修改启动文件 startup_stm32f10x_hd.s,替换了三个关于中断的函数,其中注释掉了SysTick_Handler,换成了xPortSysTickHandler,但是在原子的开发手册中关于 delay.c的systick函数修改是:

void SysTick_Handler(void)
{   
    if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)
    {
        xPortSysTickHandler();  
    }
}

因此在修改启动文件的时候不需要替换SysTick_Handler就可以:

; Vector Table Mapped to Address 0 at Reset
                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors
                EXPORT  __Vectors_End
                EXPORT  __Vectors_Size
                IMPORT  vPortSVCHandler
                IMPORT  xPortPendSVHandler

__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                DCD     MemManage_Handler          ; MPU Fault Handler
                DCD     BusFault_Handler           ; Bus Fault Handler
                DCD     UsageFault_Handler         ; Usage Fault Handler
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
;                DCD     SVC_Handler                ; SVCall Handler
                DCD     vPortSVCHandler
                DCD     DebugMon_Handler           ; Debug Monitor Handler
                DCD     0                          ; Reserved
;                DCD     PendSV_Handler             ; PendSV Handler
                DCD     xPortPendSVHandler
                DCD     SysTick_Handler            ; SysTick Handler

具体为什么和定时器中的print函数冲突还有待挖掘;
另外一个就是:
FreeRTOS的demo中F4和F1的FreeRTOSconfig.h有差异,在进行F1中断测试的时候,需要修改

#define configMAX_SYSCALL_INTERRUPT_PRIORITY    0x4F 

有效的是MSB,也就是4,因为F1只用了m3内核的16个中断,低8位没有用,设置为0x4F则:优先级高于4的中断不会被屏蔽,等于低于4的会被屏蔽掉。
同时分析F4的FreeRTOSconfig.h就会发现


没有重定义SysTick_Handler,这也证明了上面对启动文件的修改。

相关文章

  • FreeRTOS+STM32F103 中断测试 卡死

    在使用原子的战舰开发板进行中断测试实验时发现,两个定时器只print一下就挂掉了,经过分析发现是SysTick_H...

  • centos使用rz命令卡死

    使用rz -y命令上传大文件时,总是中断或者卡死。 解决:使用如下命令即可

  • J.U.C之AQS:源码解析-感悟

    关于中断 对于响应中断我们可以发现AQS 代码 1 开始时测试判断线程是否中断 2 当线程阻塞后,在次测试判断线程...

  • 8 - 测试

    单元测试 Error 不会中断 Fail 会中断测试 使用 go test -v -cover 可是进行代码覆盖率...

  • 中断误报测试

    目前确定: 下降产生中断,上升不触发中断 当前低,进入休眠,先拉高再拉低,先上升不触发,后下降触发中断 当前高,进...

  • APP 健壮性测试

    目录 一、异常场景测试 二、交叉事件测试/中断测试 三、时间测试 一、异常场景测试 1、没有内存空间时,APP能否...

  • APP 健壮性测试

    目录 一、异常场景测试 二、交叉事件测试/中断测试 三、时间测试 一、异常场景测试 1、没有内存空间时,APP能否...

  • APP 健壮性测试

    目录 一、异常场景测试 二、交叉事件测试/中断测试 三、时间测试 四、离线浏览 一、异常场景测试 1、没有内存空间...

  • App健壮性测试

    目录 一、异常场景测试 二、交叉事件测试/中断测试 三、时间测试 一、异常场景测试 1、没有内存空间时,APP能否...

  • Jmeter命令执行生成测试报告

     使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死,测试数据不够...

网友评论

      本文标题:FreeRTOS+STM32F103 中断测试 卡死

      本文链接:https://www.haomeiwen.com/subject/lfnmwftx.html