Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Строго говоря, SysTick — это часть ядра Cortex M3, поэтому работа с ним в разных контроллерах на этом ядре практически идентична.
Полезнее было бы рассмотреть работу с родной периферией миландра в каком-нибудь более-менее реалистичном сценарии. Чтение ADC через DMA, например.
По-хорошему, вам даже не обязательно было трогать регистры; в файле core_cm3.h уже есть готовая функция для его настройки — SysTick_Config.
SysTick->LOAD |= ...;
выглядит странно, не находите?__task void f_LED (void) {
while(1)
{ PORTС-RXTX!=1;
os_dly_wait (1000);
PORTС-RXTX&=~(1);
os_dly_wait (1000);
}
Они в этом микроконтроллере достаточно навороченные, число регистров конфигурации гораздо больше 4-х.
void SysTick_Handler(void)
{
LED_Blink();
static unsigned task1 = SECONDS(1);
if(!(task1--))
{
LED_Blink();
task1 = SECONDS(1);
}
static unsigned task2 = MILLISECONDS(254);
if(!(task2--))
{
UART_Handler();
task2 = SECONDS(1);
}
}
int delay=500;
int State=BEGIN;
while (1) {
switch (State) {
case BEGIN:
LocalTimer=GlobalTimer+delay;
LedOn();
State=LED_ON;
break;
case LED_ON:
if (LocalTimer>=GlobalTimer) {
LocalTimer=GlobalTimer+delay;
LedOff();
State=LED_OFF;
}
break;
case LED_OFF:
if (LocalTimer>=GlobalTimer) {
LocalTimer=GlobalTimer+delay;
LedOn();
State=LED_ON;
}
break;
}
}
Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Системный таймер (SysTick)