Basically, I am trying to blink an LED on an STM32F103C8T6. Besides the LED on the PCB, there is a label reads "PC13". I did some searching and realized that it probably means the LED is on the 13th pin on port C, so all I need to do is to drive it high or low, but how?
I have tried Googling, and it leads me to this example. However, the author doesn't give enough explanation so I am not sure of the purpose of writing the magic numbers to magic addresses (I guess they are memory-mapped registers?). The example spent some time configuring a peripheral clock, but we don't do this when using the Arduino framework, so why do I need to configure another clock when the goal is as simple as driving a pin? More importantly, it doesn't tell me how to figure out the steps myself: how can I know it is necessary to configure the clock? While ST has provided detailed documents including a Programming manual and Reference manual, I cannot effectively navigate these one-thousand-page manuals. Section 9 General-purpose and alternate-function I/Os (GPIOs and AFIOs) looks relevant, but I just cannot make sense of it.
To reiterate, I would like to know how can I learn how to blink an LED on an embed system with bare-metal assembly. For example, which part of which document do I need to read, in order to find which information? I specify the trivial task of blinking an LED to narrow the scope, and I believe I have shown enough research effort, so I hope this question is on topic.