建设银行网站个人客户,网站界面用什么做的,项目管理培训机构排名,wordpress伪静态教程STM32F10x_StdPeriph_Lib_V3.6.0 1 头文件包含关系2 .c文件内部结构3 宏定义位置4 位掩码bit mask5 .c文件中定义私有变量6 枚举类型定义 1 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库#xff0c;就管理了#xff1b; 2 头文件包含关系2 .c文件内部结构3 宏定义位置4 位掩码bit mask5 .c文件中定义私有变量6 枚举类型定义 1 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库就管理了 2 .c文件内部结构
/********************************************************************************* file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c * author MCD Application Team* version V3.6.0* date 20-September-2021* brief Main Interrupt Service Routines.* ******************************************************************************* attention********************************************************************************/
【段】文件头注释/* Includes -------------------------------*/
【段】包含头文件
/* Private typedef ------------------------*/
【段】内部类型重命名
/* Private define -------------------------*/
【段】内部宏定义
/* Private macro --------------------------*/
【段】内部预处理宏函数
/* Private variables ----------------------*/
【段】内部变量定义
/* Private function prototypes ------------*/
【段】内部函数声明
/* Private functions ----------------------*/
【段】函数实现 3 宏定义位置
有些宏定义在.c文件中有些在 .h文件中没规律吗
例如
// stm32f10xx_gpio.c:
#define MAPR_OFFSET (AFIO_OFFSET 0x04)// stm32f10xx_gpio.h
#define GPIO_Pin_0 ((uint16_t)0x0001)如果宏定义只用在自己的.c文件中定义到.c文件中 如果要被其他文件用就定义在.h文件中 4 位掩码bit mask 时钟控制寄存器RCC_CR的bit18【HSEBYP】
// 文件 stm32f10x_rcc.c
// 位掩码定义
#define CR_HSEBYP_Reset ((uint32_t)0xFFFBFFFF) // bit18 0;
#define CR_HSEBYP_Set ((uint32_t)0x00040000) // bit18 1; 位掩码使用 /* Set HSEBYP */RCC-CR | CR_HSEBYP_Set;/* Reset HSEBYP bit */RCC-CR CR_HSEBYP_Reset;ST公司工程师为了不进行移位操作定义好位掩码 比如 想要让CR寄存器的bit18等于1就 | 0x00040000 想要让CR寄存器的bit18等于0就 FFFBFFFF 往后咱也用用这招 5 .c文件中定义私有变量
文件 stm32f10x_rcc.c
/** defgroup RCC_Private_Variables* {*/
static __I uint8_t APBAHBPrescTable[16] {0, 0, 0, 0, 1, 2, 3, 4, 1, 2, 3, 4, 6, 7, 8, 9};
static __I uint8_t ADCPrescTable[4] {2, 4, 6, 8};static原来这样使啊Private /ˈpraɪvət/ 6 枚举类型定义
typedef enum {ERROR 0, SUCCESS !ERROR} ErrorStatus;ErrorStatus RCC_WaitForHSEStartUp(void)
{__IO uint32_t StartUpCounter 0;ErrorStatus status ERROR;FlagStatus HSEStatus RESET;/* Wait till HSE is ready and if Time out is reached exit */do{HSEStatus RCC_GetFlagStatus(RCC_FLAG_HSERDY);StartUpCounter; } while((StartUpCounter ! HSE_STARTUP_TIMEOUT) (HSEStatus RESET));if (RCC_GetFlagStatus(RCC_FLAG_HSERDY) ! RESET){status SUCCESS;}else{status ERROR;} return (status);
}
枚举类型就是给参数画个圈固定几个数 最大的好处就是传递的参数明确如果传错编译时就会报错 让你及时发现错误