У меня есть STM32 NUCLEO-64 F103RB, и я использую Keil uVision 5. Я только что тестировал устройство с помощью программного обеспечения CubeMX и смог мигать или включить зеленый светодиод на моем устройстве. Затем я решил сделать то же самое, изменив значения в регистрах на плате в коде C напрямую. Это схема c устройства:
Где я выделил GPIO A и шину, которая подключается к указанному порту. Насколько я понимаю, перед фактическим включением светодиода нужно сделать две вещи: 1 - активировать часы для шины APB2 2 - перевести порт GPIOA 5 (соответствующий светодиоду) в режим вывода.
Я сделал эти два шага. Однако светодиод по-прежнему не включается. Я попытался просмотреть документацию и обнаружил, что PA5 можно использовать в качестве SPI, и я попытался изменить регистр AFIO_MAPR (стр. 184 справочного руководства), но это также не сработало. Я попытался посмотреть на активацию часов для AHB2, но я не совсем понял, как это будет работать. Мой C код:
#include "stm32f10x.h" // Device header
int main() {
// Initialise clock of APB2 Bus
RCC->APB2ENR = (RCC->APB2ENR & 0x0) | RCC_APB2ENR_IOPAEN;
// Put the GPIOA in Output mode
GPIOA->CRL = (GPIOA->CRL & 0x44444444) | GPIO_CRL_MODE5_1;
// Changinging the ODR Register (Lighting the LED)
while(1) {
GPIOA->ODR = (GPIOA->ODR & 0x0) | GPIO_ODR_ODR5;
}
}
Nucleo64 F103RB Справочное руководство
Nucleo64 F103RB Руководство пользователя