スタックポインタ
https://chatgpt.com/c/67574fe2-f829-4b8f-9ec3-70c62457c346
code:c
#include "stm32f1xx_hal.h"
void SysTick_Handler(void) {
// HALのSysTickハンドラを呼び出し
HAL_IncTick();
HAL_SYSTICK_IRQHandler();
// スタックフレームのプログラムカウンタを取得
uint32_t *stack_pointer;
__asm volatile ("MRS %0, msp" : "=r" (stack_pointer));
uint32_t pc = stack_pointer6; // PCはスタックフレームの6番目の要素
printf("Program Counter at interrupt: %p\n", (void*)pc);
}
int main(void) {
// HALライブラリの初期化
HAL_Init();
// システムクロックの設定
SystemClock_Config();
// SysTick割込みの設定
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
while (1) {
// メインループの処理
}
return 0;
}
// システムクロックの設定関数(省略)
void SystemClock_Config(void) {
// システムクロックの設定コード
}