RCC->AHB1ENR |=1<<1
时间: 2023-11-12 15:05:09 浏览: 368
引用\[1\]:在这段代码中,RCC->AHB1ENR |=1<<1是用来设置RCC寄存器的AHB1ENR位,使能GPIOB的时钟。具体来说,这段代码将1左移1位,然后与AHB1ENR寄存器进行或操作,将对应的位设置为1,从而使能GPIOB的时钟。\[1\]
#### 引用[.reference_title]
- *1* *2* *3* [串口通信小试](https://blog.csdn.net/m0_54226157/article/details/127466680)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
/* set voltage internal voltage to 1.8V */ RCC->APB1ENR |= RCC_APB1ENR_PWREN; PWR->CR = PWR_CR_VOS_0; phal_clk_init(); /* enable peripheral and GPIO clocks */ RCC->IOPENR |= GPIO_CLOCKS; RCC->APB1ENR |= APB1_CLOCKS; RCC->APB2ENR |= APB2_CLOCKS; RCC->AHBENR |= AHB_CLOCKS; phal_timer_init(); #if (USE_DMA_FOR_UART_TX == IOL_FEATURE_ENABLED) phal_dma_init(); #endif #if (AL_TRIGGER == AL_FROM_INTERRUPT) phal_al_sw_interrupt_setup(); #endif
这段代码的作用是将内部电压设置为1.8V,然后初始化时钟和定时器,并启用外设和GPIO时钟。其中,RCC代表时钟控制寄存器,PWR代表电源控制寄存器,APB1ENR、APB2ENR、AHBENR分别代表不同的时钟总线。GPIO_CLOCKS、APB1_CLOCKS、APB2_CLOCKS、AHB_CLOCKS则是不同的外设和GPIO时钟。
RCC_AHB1ENR |= (1<<5); //第二步 配置GPIO为输出 GPIOF->MODER &= ~(3<<(2*6));//将目标位清零 GPIOF->MODER |= (1<<(2*6)); //第三步 让GPIO输出0或者1,ODR或者BSSR寄存器 GPIOF->ODR |= (1<<6); //GPIOF_ODR &= ~(1<<6); while(1) { //GPIOF->ODR &= ~(1<<6); GPIO_ResetBits(GPIOF, GPIO_Pin_6); Delay(0x0fffff); GPIO_SetBits(GPIOF, GPIO_Pin_6); Delay(0x0fffff); }哪里有错
根据你提供的代码,有几个地方可能存在错误:
1. 在第一步中,`RCC_AHB1ENR |= (1<<5);` 这行代码的作用是使RCC_AHB1ENR寄存器的第5位设置为1。但是在此之前,你需要确保RCC_AHB1ENR寄存器已经正确地映射到了正确的地址,以及进行了适当的初始化。否则,该行代码可能无法正确地设置第5位。
2. 在第二步中,`GPIOF->MODER &= ~(3<<(2*6));` 这行代码的作用是将GPIOF的第12和13位清零,以将其配置为输出模式。但是,请确保GPIOF已经正确地映射到了正确的地址,并且进行了适当的初始化。否则,该行代码可能无法正确地清零指定位。
3. 在第三步中,`GPIOF->ODR |= (1<<6);` 这行代码的作用是将GPIOF的第6位设置为1,以输出高电平。但是,同样需要确保GPIOF已经正确地映射到了正确的地址,并且进行了适当的初始化。
4. 在while循环中,你使用了`GPIO_ResetBits`和`GPIO_SetBits`函数来分别清零和置高GPIOF的第6位。请确保你正确地调用了这些函数,并且GPIOF已经进行了适当的初始化。
总而言之,要避免错误,需要确保寄存器和GPIO的地址映射正确,并且进行了适当的初始化。此外,还要确保正确调用了相关函数来设置和清零指定位。如有需要,请参考相关硬件的文档或参考示例代码来确保正确配置和操作寄存器和GPIO。
阅读全文