|
参考正点原子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
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版