// Enable GPIOA clock
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
// Set pin as output
GPIOA->MODER &= ~(3 << (10 * 2)); // clear bits for the pin
GPIOA->MODER |= (1 << (10 * 2)); // set pin to output mode
GPIOA->OTYPER &= ~(1 << 10); // set to push-pull mode
GPIOA->OSPEEDR |= (3 << (10 * 2)); // set to high speed
GPIOA->PUPDR &= ~(3 << (10 * 2)); // no-pull up, no-pull down
// Set pin high
GPIOA->BSRR |= (1 << 10);
// Enable GPIOC clock
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
// Set pin as input
GPIOC->MODER &= ~(3 << (4 * 2)); // clear bits for the pin
GPIOC->PUPDR &= ~(3 << (4 * 2)); // no-pull up, no-pull down
// Configure trigger for Rising edge
EXTI->RTSR |= EXTI_RTSR_TR4;
EXTI->IMR |= EXTI_IMR_MR4;
NVIC_EnableIRQ(EXTI4_IRQn);
这将启用PC4 GPIO引脚(顺便说一句,注意RCC寄存器控制引脚所在的GPIO时钟),并配置它为一个输入引脚。然后,会配置该引脚上的外部中断,以启动中断服务程序并触发Rising edge事件。
简而言之,您可以通过使用STM32F3系列的寄存器定义,直接控制GPIO并配置它们,而无需使用Cube MX库。