I am unsuccessful in running dosomething(); in the following extract when using breakpoints on analogRead()
and if
and then setting the global variable val
to 1000:
int val = 0;
val = analogRead(C4);
if (val > 900) {
dosomething();
...
A breakpoint on dosomething()
never triggers.
What am I missing?
What kind of board are you using?
platform = ststm32
board = genericSTM32F103C8
board_build.f_cpu = 36000000L
framework = arduino
upload_protocol = stlink
debug_tool = stlink
I never really experienced any problems with debugging an STM32 (other than an ESP32). As in all MCUs, the number of breakpoints is limited. I think the STM32F103 has 6 breakpoints, one of which is used for single stepping and similar.
After reading your question again, I’m unsure what you are trying to do and what really happens:
- What’s the story with setting
val
to 1000? Are you setting it in the debugger? Or what exactly are you doing?
- Do breakpoints work but they don’t work when you change the value of
val
?
- Or do breakpoints not work at all?
I am attempting to have the program branch into the if condition by setting val > 900 manually in the debugger (i.e. Run / Variables sidebar), overwriting the value set by analogRead().
Breakpoints work.
I’ve tried it myself and it’s working without problem.
For my test, I set two breakpoints: one on the if statement line and one on the doSomething() line. When the debugger stopped on the if statement line, I set val
to 1000. Then I clicked the Continue icon and the debugger stopped on doSomething() as expected.
Does your setup look the same? At what line is your debugger stopped when you change the variable?