RCC_APB2PeriphResetCmd(0X01FC,DISABLE); //复位所有IO口
时间: 2023-11-26 08:06:11 浏览: 68
这段代码的作用是禁用特定外设的复位功能,具体而言是禁用了0x01FC所对应的外设的复位功能。该函数的参数是外设寄存器 RCC_APB2RSTR 的值,通过将该值设置为 DISABLE,可以禁用相应外设的复位功能。在这个例子中,0x01FC 是一个16位的二进制数,每一位对应一个特定的外设,通过将对应位设置为 1,可以使相应外设进入复位状态。禁用复位功能后,相应的外设将不会被复位。
相关问题
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);//复位SPI1 RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);//停止复位SPI1
根据引用\[1\],RCC_APB2PeriphResetCmd函数用于强制或释放高速APB (APB2) 外设的复位。该函数有两个参数,第一个参数是指定要复位的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_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3, RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17, RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11。第二个参数是指定外设复位的新状态,可以是ENABLE或DISABLE。
根据引用\[2\],如果NewState不等于DISABLE,则将RCC_APB2Periph的值设置到RCC->APB2ENR寄存器中。否则,将RCC_APB2Periph的值从RCC->APB2ENR寄存器中清除。
根据引用\[3\],GPIO_Configuration函数用于配置GPIO外设。在该函数中,首先使能GPIOC外设的时钟,然后使能SYSCFG外设的时钟。接下来,配置GPIOC的第3个引脚为输入模式,无上下拉电阻。
根据以上信息,RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE)函数用于复位SPI1外设,而RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE)函数用于停止复位SPI1外设。
#### 引用[.reference_title]
- *1* [RCC_APB2PeriphResetCmd(0X01FC,DISABLE)](https://blog.csdn.net/gtkknd/article/details/52879981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [STM32F103固件库源码解析——RCC_APB2PeriphClockCmd](https://blog.csdn.net/qq_37253168/article/details/113726821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [STM32F407的外部中断设置_RCC_APB2PeriphClockCmd_RCC_APB2Periph_SYSCFG](https://blog.csdn.net/gtkknd/article/details/52851081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
static void NVIC_SetVectorTable(void) { uint8_t i; FLASH_Unlock(); for(i = 0; i < 48; i++) { VectorTable[i] = *(__IO uint32_t*)(Application1Address + (i<<2)); } /* Enable the SYSCFG peripheral clock*/ FLASH_Lock(); /* Enable the SYSCFG peripheral clock*/ RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, DISABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Remap SRAM at 0x00000000 */ SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM); __enable_irq();//disable in boot }
这是一段代码,用于设置向量表(Vector Table)的函数。
首先,通过调用FLASH_Unlock()函数解锁Flash模块,以便可以对Flash进行读取操作。
然后,使用一个循环来遍历向量表的每个条目。在每次循环中,从应用程序地址(Application1Address)偏移相应的位置(i<<2)处读取一个32位的数据,并将其存储到VectorTable数组中。
接下来,调用FLASH_Lock()函数锁定Flash模块,以保护Flash数据的完整性。
然后,通过调用RCC_APB2PeriphResetCmd()函数打开并关闭RCC_APB2Periph_SYSCFG外设的复位功能,以确保SYSCFG外设处于正常工作状态。
接着,通过调用RCC_APB2PeriphClockCmd()函数使能RCC_APB2Periph_SYSCFG外设的时钟。
接下来,通过调用SYSCFG_MemoryRemapConfig()函数将SRAM内存映射到地址0x00000000处,即将系统的向量表设置为从SRAM中加载。
最后,通过调用__enable_irq()函数使能中断,这可能是在引导阶段禁用中断后重新启用中断。
总体而言,这段代码的功能是设置向量表并配置系统的内存映射,以便正确处理中断和执行应用程序。