Главная » Статьи » Уроки по программированию stm32fxxx » Уроки по программированию stm32f1xx |
Урок 4: SysTick
В примере для GPIO задержка задавалась в тактах и сложно пересчитать полученное значение во время. В этом примере мы напишем функцию delay на SysTick. В функции InitAll()прописываем строку SysTick_Config(SystemCoreClock /1000);//1ms Делителем можно изменять частоту тактирования таймера. В данном случае таймер будет срабатывать каждую 1 мс. Функцию Delay() перепишем следующим образом: void Delay( unsigned int Val) { SysTickDelay = Val; while (SysTickDelay != 0) {}; } Где SysTickDelay – глобальная переменная. Теперь осталось только в функцию прерывания от SysTick прописать код: void SysTick_Handler(void) { if (SysTickDelay != 0) { SysTickDelay--; } } Работать это будет так: Когда вы пишите Delay(x); Функция устанавливает SysTickDelay отличный от 0 и каждую 1 мс значение уменьшается на 1. Сама функция проверяет эту переменную на равенство 0. Через х мс переменная станет равна 0 и функция delay() завершится. Вся программа выглядит так:
Использование библиотеки SysTick 1) Создаём группу SysTick 2) Добавляем файлы stm32f10x_systick.c и systick.c 3) В main.c прописываем #include "systick.h" 4) В target1 - > Optionc -> C/C++ -> Include paths прописываем .\Libs\SysTick. 5) В инициализации добавляем строку delay_init(); 6) Теперь все delay можно заменить на delay_ms(uint16_t time), где time – время в миллисекундах. Или на delay_us(u32 time), где time – время в микросекундах. Библиотеки можно скачать с раздела Каталог файлов | |
Просмотров: 12206 | Комментарии: 11 | |
Всего комментариев: 11 | ||||||||||
| ||||||||||