Настраиваем мигание светодиода напрямую через регистры.
Создаем проект в Keil, выбираем наш МК, подключаем библиотеку CMSIS Core и Device Startup, создаем в корне файл main.c и пишем следующий код:
В этом коде задержка (delay) реализована с помощью цикла for.
#include "stm32f10x.h"
int main(void)
{
uint32_t i;//Создаем переменную i разрядностью 32 бита
RCC->APB2ENR|=RCC_APB2ENR_IOPCEN;//ВКЛЮЧЕНИЕ ТАКТИРОВАНИЯ ПОРТА C
//Конфигурирование GPIOC.13 - 1 вариант
GPIOC->CRH = 0x200000;//НАСТРОЙКА РЕЖИМА РАБОТЫ ПОРТА 13 CNF и MODE
//Конфигурирование GPIOC.13 - 2 вариант
//GPIOC->CRH = 1 << 20;// операция сдвига
//Конфигурирование GPIOC.13 - 3 вариант
//GPIOC->CRH &= ~GPIO_CRH_MODE13; //очистить разряды MODE
//GPIOC->CRH &= ~GPIO_CRH_CNF13; //очистить разряды CNF
//GPIOC->CRH |= GPIO_CRH_MODE13_1;//выход, 2MHz
//GPIOC->CRH &= ~GPIO_CRH_CNF13; //общего назначения, симетричный
while(1)
{
GPIOC->ODR = 0x2000;//ВЫСТАВЛЯЕМ УРОВЕНЬ ПОРТА 13
for (i=0;i<2000000;i++){}
GPIOC->ODR = 0x0000;
for (i=0;i<2000000;i++){}
}
}
Настраиваем именно CRH, т.к. порт 13 находится именно в этом регистре.
