Я сейчас пытаюсь научиться самостоятельно программировать эти микроконтроллеры на уровне регистров, и я только что зашел в тупик
То, что я пытаюсь выполнить sh очень просто , По сути, у моей платы STM32F411 есть светодиод, подключенный к контакту A5, и кнопка pu sh, подключенная к PIN C13
. Я пытался создать простую программу мигания светодиода, при которой светодиод на A5 включался, когда кнопка нажата и выключена, когда кнопка не нажата
Прямо сейчас, как только я загружаю свою программу, светодиод включается, но независимо от того, сколько раз я нажимаю sh кнопку, это состояние делает не изменится
Буду признателен, если кто-нибудь подскажет мне что-нибудь здесь: C
Я публикую здесь свой код ниже
#include "stm32f4xx.h"
/*
NOTES
USER LED IS ON PIN A5
USER BUTTON IS ON PIN C13
*/
uint8_t var=0;
int main(){
RCC->AHB1ENR |=(1<<0); //Clock on port A
RCC->AHB1ENR |=(1<<2); //Clock on port C
//PORT A PIN 5 Config
/*
00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode
*/
GPIOA->MODER |= ~(1<<11);
GPIOA->MODER |= (1<<10);
GPIOA->OSPEEDR |= ((1<<11)|(1<<10));
//PORT C PIN 13 Config
/*
00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode
*/
GPIOC->MODER |= ~(1<<27);
GPIOC->MODER |= ~(1<<26);
GPIOC->OSPEEDR |= ((1<<27)|(1<<26));
GPIOC->PUPDR |= (1<<27);
GPIOC->PUPDR |= ~(1<<26);
while(1)
{
var = GPIOC->IDR;
if(var==0)
{
GPIOA->BSRR = (1<<5);
}
else
{
GPIOA->BSRR = 1<<(5+16);
}
}
}
Заранее благодарю !