История изменений
Исправление COKPOWEHEU, (текущая версия) :
#include "stm32f10x.h"
#include "pinmacro.h"
#define StackTop ((uint32_t)(0x20000000 + 20*1024))
#define LED_Y B,5,1,GPIO_PP50
#define LED_G B,6,1,GPIO_PP50
#define LED_R B,7,1,GPIO_PP50
static void Reset_Handler(void);
__attribute__((used,section(".isr_vector")))
void (*const g_pfnVectors[])(void) = {
[0]=(void*)StackTop,
[1]=Reset_Handler,
};
static void Reset_Handler(void){
RCC->APB2ENR = RCC_APB2ENR_IOPBEN;
//GPIO_config(LED_G);
GPIOB->CRL = (0b0011 << (4*6));
while(1){
//GPO_T(LED_G);
GPIOB->ODR ^= (1<<6);
for(int32_t i=(1<<20); i; i--){asm("");}
}
}
$ arm-none-eabi-gcc src/main.c -nostartfiles -mthumb -mcpu=cortex-m3 -Os -Ilib -Ilib/include/core -Ilib/include -DSTM32F10X_MD -Tlib/stm32f103c8_flash.ld -o res.elf
$ arm-none-eabi-size res.elf
text data bss dec hex filename
48 0 0 48 30 res.elf
Уже не так очевидно, не правда ли?
Исходная версия COKPOWEHEU, :
#include "stm32f10x.h"
#include "pinmacro.h"
#define StackTop ((uint32_t)(0x20000000 + 20*1024))
#define LED_Y B,5,1,GPIO_PP50
#define LED_G B,6,1,GPIO_PP50
#define LED_R B,7,1,GPIO_PP50
static void Reset_Handler(void);
__attribute__((used,section(".isr_vector")))
void (*const g_pfnVectors[])(void) = {
[0]=(void*)StackTop,
[1]=Reset_Handler,
};
static void Reset_Handler(void){
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
//GPIO_config(LED_G);
GPIOB->CRL = (0b0011 << (4*6));
while(1){
//GPO_T(LED_G);
GPIOB->ODR ^= (1<<6);
for(int32_t i=(1<<20); i; i--){asm("");}
}
}
$ arm-none-eabi-gcc src/main.c -nostartfiles -mthumb -mcpu=cortex-m3 -Os -Ilib -Ilib/include/core -Ilib/include -DSTM32F10X_MD -Tlib/stm32f103c8_flash.ld -o res.elf
$ arm-none-eabi-size res.elf
text data bss dec hex filename
52 0 0 52 34 res.elf
Уже не так очевидно, не правда ли?