
stm32模块初始化模版和函数寄存器汇总.doc
62页STM32 学习笔记GPIO 口口GPIO 初始化初始化void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;//声明结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开功能时钟 (再写这句程序的时候,必须进行时钟系统初始化的操作)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;//指明操作对象引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置 IO 口时钟为 50MHz/10MHz/2MHzGPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置推挽输出/*GPIO_Mode_AIN 模拟输入 GPIO_Mode_IN_FLOATING 浮空输入 (一般为中断所使用)。
GPIO_Mode_IPD 下拉输入 GPIO_Mode_IPU 上拉输入 GPIO_Mode_Out_OD 开漏输出 GPIO_Mode_Out_PP 推挽输出 GPIO_Mode_AF_OD 复用开漏输出 GPIO_Mode_AF_PP 复用推挽输出 */ (一般用在点灯) GPIO_Init(GPIOA, //执行初始化 IO 口}GPIO 常用函数常用函数GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置高 IO 口GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置低 IO 口GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_4)));// 翻转 IO 口GPIOA->ODR = 0X0010 ;//IO 口直接赋值语句GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)(读取该口的电压值,相当于 AVR 的 pin)。
若 IO 口为高电平,则这个函数返回为 1,为低电平时返回为 0.SysTick 系统时钟系统时钟SysTick 配置函数配置函数if (SysTick_Config(SystemCoreClock / 3000))//配置时钟的频率,改变数字可改变频率,数字越大频率越快{ /* Capture error */ while (1);} EXTI 中断中断外部中断外部中断外部中断外部中断 IO 口设置口设置void GPIO_EXTI_Configuration(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);//使能时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//使能复用 IO 时钟GPIO_InitTypeDef GPIO_InitStructure;//声明 IO 口初始化结构体GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//指定 PD.06 为操作对象GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//设置模式为浮空输入GPIO_Init(GPIOC, //初始化 IO 口GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; //指定 PD.13,14 为操作对象GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //设置模式为浮空输入GPIO_Init(GPIOD, //初始化 IO 口GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6); //将 PC.06 映射到外部中断 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource13); //将 PD.13 映射到外部中断 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource14); //将 PD.14 映射到外部中断}外部中断初始化外部中断初始化void EXTI_Configuration(void){EXTI_InitTypeDef EXTI_InitStructure;//声明外部中断初始化结构体EXTI_InitStructure.EXTI_Line = EXTI_Line6|EXTI_Line13|EXTI_Line14;//使能外部中断线路 6,13,14EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//设置 EXTI 线路模式为中断EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//设置触发方式为上升沿EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能中断线路EXTI_Init(//初始化结构体}外部中断向量外部中断向量//声明中断向量//选择中断向量组别为 2 组NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//指定外部中断向量NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置该中断的先占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置该中断的从优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能该外部中断NVIC_Init(//初始化外部中断NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;// 指定外部中断向量NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置该中断的先占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //设置该中断的从优先级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能该外部中断NVIC_Init( //初始化外部中断}由抢先优先级和从优先级实现了中断嵌套,进而使程序即使处理更加要紧的事情。
且高的抢先优先级可以打断低的抢先优先级,当抢先优先级相同时,那就比较从优先级,先响应高的当二者都相同时,先响应物理地址低的中断外部中断函数外部中断函数/*example1*/void EXTI9_5_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line6) != RESET)//如果对应的中断线路触发事件,注意可以一个中断向量对应多个中断引脚{/*add code */EXTI_ClearITPendingBit(EXTI_Line6);//清中断标志}}/*example2*/void EXTI15_10_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line13) != RESET)//如果对应的中断线路 13 触发事件,注意可以一个中断向量对应多个中断引脚{/* add code */EXTI_ClearITPendingBit(EXTI_Line13);//清中断标志位}if(EXTI_GetITStatus(EXTI_Line14) != RESET)//如果对应的中断线路 14 触发事件,注意可以一个中断向量对应多个中断引脚{/* add code */EXTI_ClearITPendingBit(EXTI_Line14); //清中断标志位}}中断中断 channel 表表WWDG_IRQChannel 窗口看门狗中断 0x00PVD_IRQChannel PVD 通过 EXTI 探测中断 TAMPER_IRQChannel 篡改中断 RTC_IRQChannel RTC 全局中断 FlashItf_IRQChannel FLASH 全局中断 RCC_IRQChannel RCC 全局中断 EXTI0_IRQChannel 外部中断线 0 中断 EXTI1_IRQChannel 外部中断线 1 中断 EXTI2_IRQChannel 外部中断线 2 中断 EXTI3_IRQChannel 外部中断线 3 中断 EXTI4_IRQChannel 外部中断线 4 中断 DMAChannel1_IRQChannel DMA 通道 1 中断 DMAChannel2_IRQChannel DMA 通道 2 中断 DMAChannel3_IRQChannel DMA 通道 3 中断 DMAChannel4_IRQChannel DMA 通道 4 中断 DMAChannel5_IRQChannel DMA 通道 5 中断 DMAChannel6_IRQChannel DMA 通道 6 中断 DMAChannel7_IRQChannel DMA 通道 7 中断 ADC_IRQChannel ADC 全局中断 USB_HP_CANTX_IRQChannel USB 高优先级或者 CAN 发送中断 USB_LP_CAN_RX0_IRQChannel USB 低优先级或者 CAN 接收 0 中断 CAN_RX1_IRQChannel CAN 接收 1 中断 CAN_SCE_IRQChannel CAN SCE 中断EXTI9_5_IRQChannel 外部中断线 9-5 中断 (5 至 9 对应一个中断源)。
TIM1_BRK_IRQChannel TIM1 暂停中断 TIM1_UP_IRQChannel TIM1 刷新中断 TIM1_TRG_COM_IRQChannel TIM1 触发和通讯中断 TIM1_CC_IRQChannel TIM1 捕获比较中断 TIM2_IRQChannel TIM2 全局中断 TIM3_IRQChannel TIM3 全局中断 TIM4_IRQChannel TIM4 全局中断 I2C1_EV_IRQChannel I2C1 事件中断 I2C1_ER_IRQChannel I2C1 错误中断 I2C2_EV_IRQChannel I2C2 事件中断 I2C2_ER_IRQChannel I2C2 错误中断 SPI1_IRQChannel SPI1 全局中断 SPI2_IRQChannel SPI2 全局中断 USART。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





