STM32F103 Systick Interrupt dejó de funcionar al depurar en ram - (Coocox IDE)

Intenté depurar mi código en ram para aumentar la vida útil del flash (solo con un mínimo de escritura de 10k)

De todos modos, até los pines boot0 y boot1 a 3.3v y configuré el compilador para depurar desde ram de esta manera:

Configuración de "depuración en ram" del compilador

Cuando depuro mi código de esta manera, mi SysTick_Handler no se ejecuta. Si depuro desde flash, todo funciona bien.

No puedo entender qué está pasando, y ¿ cómo puedo hacer que mi interrupción SysTick funcione en modo de depuración ram?

PD: Intenté preguntar esto en el foro de coocox, pero no obtuve ninguna ayuda allí.

Eso es un chip de ~ $ 5, pero agreguemos el precio de una estación de aire caliente para cambiarlo. $105/10000 = alrededor de un centavo por prueba. ¿Seguro que tu tiempo vale un poco más que eso? Sin embargo, si realmente desea investigarlo, comience por averiguar si se ejecuta con la interrupción de la RAM y es simplemente el depurador lo que hace que falle, o si esa configuración no hace que funcione desde la RAM por sí solo.

Respuestas (1)

Debe reubicar la tabla de vectores; en este momento, es probable que el procesador todavía esté usando la copia de la tabla de vectores en FLASH, que apuntará a una versión anterior de su código en FLASH. (O bien, si ha borrado FLASH desde que comenzó a desarrollar en SRAM, la tabla de vectores en uso estará en blanco).

Si está utilizando la biblioteca de periféricos estándar (SPL) STM32, puede definir la VECT_TAB_SRAMmacro para que establezca los indicadores apropiados para usar una tabla de vectores en SRAM. Si va por la ruta completa, debe configurar el campo TBLOFF de VTOR para que apunte a la base de SRAM (0x02000000 en STM32F1).