
参考正点原子F103系列的代码,对F407进行了适配,同时代码也兼容F1系列的 代码在F4Discovery上验证通过,使用位绑定别名区来操作板子上的四个用户LED // Header : // File Name:bit_banding.h // Author :*** // Date :2014/04/04 // Explain : #ifndef __BIT_BANDING_H__ #define __BIT_BANDING_H__ //M4内核的GPIO寄存器基地址等 #if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx) || defined (STM32F40XX) || defined (STM32F427X) //这些宏定义在使用最新库函数时,都会有定义 #include "stm32f4xx.h" #define GPIO_REG_ADDR_BASE 0x40020000ul #define GPIO_REG_ADDR_OFFSET 0x400ul #define GPIO_ODR_OFFSET 0x14ul #define GPIO_IDR_OFFSET 0x10ul #endif //M3内核的GPIO寄存器基地址 #if defined (STM32F10X_LD) || defined (STM32F10X_LD_VL) || defined (STM32F10X_MD) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD) || defined (STM32F10X_HD_VL) || defined (STM32F10X_XL) || defined (STM32F10X_CL) #include "stm32f10x.h" #define GPIO_REG_ADDR_BASE 0x40010800ul #define GPIO_REG_ADDR_OFFSET 0x400ul #define GPIO_ODR_OFFSET 0x0Cul #define GPIO_IDR_OFFSET 0x08ul #endif //别名区的基地址的末地址,在M3和M4中是一样的,位地址的计算公式也是一样的 //外设别名区的基地址 #define BIT_BAND_ALIAS_PERIPHERAL_BASE 0x42000000ul #define BIT_BAND_ALIAS_PERIPHERAL_END 0x43FFFFFFul //SRAM别名区基地址 #define BIT_BAND_ALIAS_SRAM_BASE 0x22000000ul // #define BIT_BAND_ALIAS_SRAM_END 0x23FFFFFFul //在bitband区中 位地址的计算公式 #define BIT_WORD_ADDR(ByteAddr, BitNumber) ((ByteAddr&0xF0000000) + 0x2000000 + (ByteAddr&0x000FFFFF)*32 + (BitNumber&0x0000000F)*4) //将地址转换成指针,这样才能读写地址中的值 #define CONVERT_TO_PTR(BitWordAddr) ( *( (volatile unsigned long *)BitWordAddr ) ) //BitNumber |
STM32F40xTemplate.rar
下载686.02 KB, 下载次数: 18