1、STM32F1系列之常用外设说明1、RCC相关:APB2启动时钟项:RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB, RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE, RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1, RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1, RCC_APB
2、2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3, RCC_APB2Periph_ALLAPB2启动函数:RCC_APB2PeriphClockCmd(XX,ENABLE);APB1启动时钟项:RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4, RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7, RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC
3、_APB1Periph_SPI3, RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4, RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2, RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP, RCC_APB1Periph_PWR, RCC_APB1Periph_DAC, RCC_APB1Periph_ALLAPB1启动函数:RCC_APB2PeriphClockC
4、md(XX,ENABLE);AHB启动时钟项:RCC_AHBPeriph_DMA1RCC_AHBPeriph_DMA2RCC_AHBPeriph_SRAMRCC_AHBPeriph_FLITFRCC_AHBPeriph_CRCRCC_AHBPeriph_FSMCRCC_AHBPeriph_SDIOAHB启动函数:RCC_AHBPeriphClockCmd (XX,ENABLE);2、GPIO相关:GPIO模式:GPIO_Mode_AIN:模拟输入 GPIO_Mode_IN_FLOATING:浮空输入 GPIO_Mode_IPD:下拉输入 GPIO_Mode_IPU:上拉输入 GPIO_Mode
5、_Out_OD:开漏输出 GPIO_Mode_Out_PP:推挽输出 GPIO_Mode_AF_OD:复用开漏输出 GPIO_Mode_AF_PP:复用推挽输出GPIO速度:GPIO_Speed_2MHzGPIO_Speed_10MHzGPIO_Speed_50MHzGPIO引脚声明:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x; x:115或者allGPIO初始化函数:GPIO_Init(GPIOx, &GPIO_InitStructure); x:AG注:需要定义GPIO结构体变量,GPIO_InitTypeDef GPIO_InitStructure;
6、3、ADC相关最好需要重新初始化:ADC_DeInit(ADCx);ADC工作模式选择:ADC_Mode_Independent:独立工作ADC_Mode_RegInjecSimult:混合同步+注入同步ADC_Mode_RegSimult_AlterTrig:混合同步+交替触发ADC_Mode_InjecSimult_FastInterl:混合同步+快速交替ADC_Mode_InjecSimult_SlowInterl:混合同步+慢速交替ADC_Mode_InjecSimult:注入同步ADC_Mode_RegSimult:规则同步ADC_Mode_FastInterl:快速交替ADC_Mo
7、de_SlowInterl:慢速交替ADC_Mode_AlterTrig:交替触发通过ADC_InitStructure.ADC_Mode = XX进行赋值ADC扫描使能: ADC_InitStructure.ADC_ScanConvMode = ENABLE;ADC连续/单次模式选择:ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;ADC转换控制方式:ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/有软件控制转换ADC数据对齐方式:ADC_DataAli
8、gn_Right:右对齐/ ADC_DataAlign_Right:左对齐 ADC_InitStructure.ADC_DataAlign =XXADC转换通道数: ADC_InitStructure.ADC_NbrOfChannel = X / X=116ADC初始化函数: ADC_Init(ADCx, &ADC_InitStructure);注:在开始要定义结构体变量 ADC_InitTypeDef ADC_InitStructure是否使能ADCx DMA: ADC_DMACmd(ADCx, ENABLE);使能ADCx: ADC_Cmd(ADCx, ENABLE);初始化ADC1校准寄
9、存器: ADC_ResetCalibration(ADCx);检测ADC1校准寄存器初始化是否完成: while(ADC_GetResetCalibrationStatus(ADCx);开始校准ADC1: ADC_StartCalibration(ADCx);检测是否完成校准: while(ADC_GetCalibrationStatus(ADCx);ADC1转换软件启动: ADC_SoftwareStartConvCmd(ADCx, ENABLE);4、DMA相关:复位通道:DMA_DeInit(DMAy_Channelx);/复位DMAy通道x,y=1时,x=17;y=2时,x=15定义外
10、设基地址,全局变量: DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;/地址自己定义如:#define ADC1_DR_Address (u32)0x4001244C)定义DMA存储器地址,全局变量u32 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue; /定义DMA通道存储器地址如:volatile unsigned short int ADC_ConvertedValue8;DMA外设方向:DMA_InitStructure.DMA_DIR
11、= XX;DMA_DIR_PeripheralSRC:外设为数据传输的来源,DMA_DIR_PeripheralDST:外设为数据传输的目的地DMA传输数量寄存器值,即缓存大小,单位由MemoryDataSize或PeripheralDataSize决定:DMA_InitStructure.DMA_BufferSize = x;/定义DMA缓冲区大小x,如8通道ADC,则x就为8DMA外设地址寄存器变不变: DMA_InitStructure.DMA_PeripheralInc = x;DMA_PeripheralInc_Disable:外设地址寄存器不变DMA_PeripheralInc_E
12、nable:外设地址寄存器递增DMA内存地址寄存器变不变: DMA_InitStructure.DMA_MemoryInc = X;DMA_MemoryInc_Disable:内存地址寄存器不变DMA_MemoryInc_Enable:内存地址寄存器递增外设数据宽度: DMA_InitStructure.DMA_PeripheralDataSize = X;DMA_PeripheralDataSize_Byte 数据宽度为8位DMA_PeripheralDataSize_Byte 数据宽度为8位DMA_PeripheralDataSize_HalfWord 数据宽度为16位DMA_Periph
13、eralDataSize_Word 数据宽度为32位存储器数据宽度: DMA_InitStructure.DMA_MemoryDataSize = X;DMA_MemoryDataSize_Byte 数据宽度为8位DMA_MemoryDataSize_HalfWord 数据宽度为16位DMA_MemoryDataSize_Word 数据宽度为32位模式选择:DMA_InitStructure.DMA_Mode =x;DMA_Mode_Circular:循环模式DMA_Mode_Normal:正常模式通道软件优先级设置:DMA_InitStructure.DMA_Priority =x;DMA_
14、Priority_VeryHigh 最高优先级DMA_Priority_High 高优先级DMA_Priority_Medium 中优先级DMA_Priority_Low 低优先级DMA内存到内存的传输使能: DMA_InitStructure.DMA_M2M = xDMA_M2M_Enable:使能DMA_M2M_Disable:未使能DMA初始化函数: DMA_Init(DMAy_Channelx , &DMA_InitStructure);DMA通道使能函数:DMA_Cmd(DMAy_Channelx , ENABLE); /使能DMA通道1注:在开始要定义结构体变量 DMA_InitT
15、ypeDef DMA_InitStructure5、NVIC相关:优先级组设定:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);NVIC_PriorityGroup_0: 0 bits for pre-emption priority 4 bits for subpriorityNVIC_PriorityGroup_1: 1 bits for pre-emption priority3 bits for subpriorityNVIC_PriorityGroup_2: 2 bits for pre-emption priority2 bits fo
16、r subpriorityNVIC_PriorityGroup_3: 3 bits for pre-emption priority1 bits for subpriorityNVIC_PriorityGroup_4: 4 bits for pre-emption priority0 bits for subpriority设置中断:NVIC_InitStructure.NVIC_IRQChannel =x;ADC1_2_IRQn = 18, /*! ADC1 and ADC2 global Interrupt*/USB_HP_CAN1_TX_IRQn = 19, /*! USB Device
17、 High Priority or CAN1 TX Interrupts */USB_LP_CAN1_RX0_IRQn = 20, /*! USB Device Low Priority or CAN1 RX0 Interrupts */CAN1_RX1_IRQn = 21, /*! CAN1 RX1 Interrupt*/CAN1_SCE_IRQn = 22, /*!EXTI9_5_IRQn = 23, /*! External Line9:5 Interrupts*/TIM1_BRK_IRQn = 24, /*! TIM1 Break Interrupt*/TIM1_UP_IRQn = 2
18、5, /*! TIM1 Update Interrupt*/TIM1_TRG_COM_IRQn = 26, /*! TIM1 Trigger and Commutation Interrupt*/TIM1_CC_IRQn = 27, /*! TIM1 Capture Compare Interrupt*/TIM2_IRQn = 28, /*! TIM2 global Interrupt */TIM3_IRQn = 29, /*! TIM3 global Interrupt */TIM4_IRQn = 30, /*! TIM4 global Interrupt*/I2C1_EV_IRQn = 3
19、1, /*! I2C1 Event Interrupt*/I2C1_ER_IRQn = 32, /*! I2C1 Error Interrupt*/I2C2_EV_IRQn = 33, /*! I2C2 Event Interrupt */I2C2_ER_IRQn = 34, /*! I2C2 Error Interrupt */SPI1_IRQn = 35, /*! SPI1 global Interrupt*/SPI2_IRQn = 36, /*! SPI2 global Interrupt*/USART1_IRQn = 37, /*! USART1 global Interrupt*/U
20、SART2_IRQn = 38, /*! USART2 global Interrupt*/USART3_IRQn = 39, /*! USART3 global Interrupt*/EXTI15_10_IRQn = 40, /*! External Line15:10 Interrupts*/RTCAlarm_IRQn = 41, /*! RTC Alarm through EXTI Line Interrupt*/USBWakeUp_IRQn = 42, /*! USB Device WakeUp from suspend through EXTI Line Interrupt */TI
21、M8_BRK_IRQn = 43, /*! TIM8 Break Interrupt */TIM8_UP_IRQn = 44, /*! TIM8 Update Interrupt*/TIM8_TRG_COM_IRQn = 45, /*! TIM8 Trigger and Commutation InterruptTIM8_CC_IRQn = 46, /*! TIM8 Capture Compare Interrupt*/ADC3_IRQn = 47, /*! ADC3 global Interrupt*/FSMC_IRQn = 48, /*! FSMC global Interrupt */S
22、DIO_IRQn = 49, /*! SDIO global Interrupt*/TIM5_IRQn = 50, /*! TIM5 global Interrupt*/SPI3_IRQn = 51, /*! SPI3 global Interrupt*/UART4_IRQn = 52, /*! UART4 global Interrupt */UART5_IRQn = 53, /*! UART5 global Interrupt */TIM6_IRQn = 54, /*! TIM6 global Interrupt */TIM7_IRQn = 55, /*! TIM7 global Inte
23、rrupt */DMA2_Channel1_IRQn = 56, /*! DMA2 Channel 1 global Interrupt*/DMA2_Channel2_IRQn = 57, /*! DMA2 Channel 2 global Interrupt */DMA2_Channel3_IRQn = 58, /*! DMA2 Channel 3 global Interrupt*/DMA2_Channel4_5_IRQn = 59, /*! DMA2 Channel 4 and Channel 5 global Interrupt*/设置抢占优先级: NVIC_InitStructure
24、.NVIC_IRQChannelPreemptionPriority =X; /抢占优先级X设置子优先级为: NVIC_InitStructure.NVIC_IRQChannelSubPriority =X; /抢占优先级X使能中断:NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能NVIC初始化函数:NVIC_Init(&NVIC_InitStructure);注:在开始时需要定义结构体变量NVIC_InitTypeDef NVIC _InitStructure;6、USART相关:USART波特率选择: USART_InitStructure.US
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1