zoukankan      html  css  js  c++  java
  • stm32点亮LED 测试代码及目录结构

    .

    main.c - 使用PB12, PB13, PB14, PB15, PB5, PB6, PB7 这七个PB口点亮LED. 注意PB3和PB4是特殊口, 直接调用无效.

    #include "delay.h"
    #include "stm32f10x.h"
    
    int main(void) {
        u16 i;
        u8 j;
        uint16_t gpios[] = {GPIO_Pin_12, GPIO_Pin_13, GPIO_Pin_14, GPIO_Pin_15, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_7};
        GPIO_InitTypeDef  GPIO_InitStructure;
        delay_init(); //延时函数初始化      
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); /使能PB端口时钟
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
        GPIO_Init(GPIOB, &GPIO_InitStructure);  //根据设定参数初始化GPIOB.5
    
        while(1) {
            i = (i+20) % 500;
            for (j = 0; j < 6; j++) {
                GPIO_SetBits(GPIOB, gpios[j]);
                delay_ms(i);
                GPIO_ResetBits(GPIOB,gpios[j]);
            }
            for (j = 6; j > 0; j--) {
                GPIO_SetBits(GPIOB, gpios[j]);
                delay_ms(i);
                GPIO_ResetBits(GPIOB,gpios[j]);
            }
        }
    }

    .

    makefile

    #工程的名称及最后生成文件的名字
    TARGET = test001
    
    #设定临时性环境变量
    export CC             = arm-none-eabi-gcc           
    export AS             = arm-none-eabi-as
    export LD             = arm-none-eabi-ld
    export OBJCOPY        = arm-none-eabi-objcopy
    
    #读取当前工作目录
    TOP=$(shell pwd)
    
    #设定包含文件目录
    INC_FLAGS= -I $(TOP)/core 
               -I $(TOP)/stm32f10x_lib/inc 
               -I $(TOP)/system 
               -I $(TOP)/user
    
    CFLAGS =  -W -Wall -g -mcpu=cortex-m3 -mthumb -D STM32F10X_HD -D USE_STDPERIPH_DRIVER $(INC_FLAGS) -O0 -std=gnu11
    C_SRC=$(shell find ./ -name '*.c')  
    C_OBJ=$(C_SRC:%.c=%.o)          
    
    .PHONY: all clean update      
    
    all:$(C_OBJ)
        $(CC) $(C_OBJ) -T stm32_f103ze_gcc.ld -o $(TARGET).elf   -mthumb -mcpu=cortex-m3 -Wl,--start-group -lc -lm -Wl,--end-group -specs=nano.specs -specs=nosys.specs -static -Wl,-cref,-u,Reset_Handler -Wl,-Map=Project.map -Wl,--gc-sections -Wl,--defsym=malloc_getpagesize_P=0x80 
        $(OBJCOPY) $(TARGET).elf  $(TARGET).bin -Obinary 
        $(OBJCOPY) $(TARGET).elf  $(TARGET).hex -Oihex
    
    $(C_OBJ):%.o:%.c
        $(CC) -c $(CFLAGS) -o $@ $<
    clean:
        rm -f $(shell find ./ -name '*.o')
        rm -f $(shell find ./ -name '*.d')
        rm -f $(shell find ./ -name '*.map')
        rm -f $(shell find ./ -name '*.elf')
        rm -f $(shell find ./ -name '*.bin')
        rm -f $(shell find ./ -name '*.hex')
    
    update:
        openocd 
            -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg  
            -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg 
            -c init 
            -c halt 
            -c "flash write_image erase $(TOP)/test001.hex" 
            -c reset 
            -c shutdown
    

    目录结构

    ├── core
    │   ├── core_cm3.h
    │   ├── core_cmFunc.h
    │   └── core_cmInstr.h
    ├── LICENSE
    ├── makefile
    ├── README.md
    ├── stm32_f103ze_gcc.ld
    ├── stm32f10x_lib
    │   ├── inc
    │   │   ├── misc.h
    │   │   ├── stm32f10x_adc.h
    │   │   ├── stm32f10x_bkp.h
    │   │   ├── stm32f10x_can.h
    │   │   ├── stm32f10x_cec.h
    │   │   ├── stm32f10x_conf.h
    │   │   ├── stm32f10x_crc.h
    │   │   ├── stm32f10x_dac.h
    │   │   ├── stm32f10x_dbgmcu.h
    │   │   ├── stm32f10x_dma.h
    │   │   ├── stm32f10x_exti.h
    │   │   ├── stm32f10x_flash.h
    │   │   ├── stm32f10x_fsmc.h
    │   │   ├── stm32f10x_gpio.h
    │   │   ├── stm32f10x.h
    │   │   ├── stm32f10x_i2c.h
    │   │   ├── stm32f10x_iwdg.h
    │   │   ├── stm32f10x_pwr.h
    │   │   ├── stm32f10x_rcc.h
    │   │   ├── stm32f10x_rtc.h
    │   │   ├── stm32f10x_sdio.h
    │   │   ├── stm32f10x_spi.h
    │   │   ├── stm32f10x_tim.h
    │   │   ├── stm32f10x_usart.h
    │   │   └── stm32f10x_wwdg.h
    │   └── src
    │       ├── misc.c
    │       ├── stm32f10x_adc.c
    │       ├── stm32f10x_bkp.c
    │       ├── stm32f10x_can.c
    │       ├── stm32f10x_cec.c
    │       ├── stm32f10x_crc.c
    │       ├── stm32f10x_dac.c
    │       ├── stm32f10x_dbgmcu.c
    │       ├── stm32f10x_dma.c
    │       ├── stm32f10x_exti.c
    │       ├── stm32f10x_flash.c
    │       ├── stm32f10x_fsmc.c
    │       ├── stm32f10x_gpio.c
    │       ├── stm32f10x_i2c.c
    │       ├── stm32f10x_iwdg.c
    │       ├── stm32f10x_pwr.c
    │       ├── stm32f10x_rcc.c
    │       ├── stm32f10x_rtc.c
    │       ├── stm32f10x_sdio.c
    │       ├── stm32f10x_spi.c
    │       ├── stm32f10x_tim.c
    │       ├── stm32f10x_usart.c
    │       └── stm32f10x_wwdg.c
    ├── system
    │   ├── delay.c
    │   ├── delay.h
    │   ├── startup_stm32f10x_hd.c
    │   ├── system_stm32f10x.c
    │   └── system_stm32f10x.h
    └── user
        └── main.c
    
    6 directories, 61 files

    源码下载 https://pan.baidu.com/s/1J6qEPQIhBId-Zo5nUzOgAQ 密码: 5t3d

    .

  • 相关阅读:
    网页的尺寸
    前端大杂烩总结
    vscode 2.0 配置
    关于node 版本的一个奇葩的问题 :HPE_UNEXPECTED_CONTENT_LENGTH error #3103
    ADO.NET 增删改查的基本用法
    面向对象 类库 委托
    三大特性:封装,继承,多态
    面向对象 抽象类 多态
    SQL数据库基础(九)
    SQL数据库基础(八)
  • 原文地址:https://www.cnblogs.com/milton/p/8885546.html
Copyright © 2011-2022 走看看