STM32 Cube IDE CMSIS

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Добрый вечер всем!
Парни тут такой вопрос к знатокам STM-щикам.
Хочу настроить делей свой через SysTick и не
могу найти маски в файле под регистр STK_CTRL
и остальные... Может быть не в том файле ищу а?
Подскажите кто знает. То как известно в кубике
с автоподстановкой дела обстоят ну не очень уж...
Прошу сильно не ругайтесь я баран бараном тут.
HAL не признаю хочу работать с CMSIS так как
начинал с AVR и с регистрами как-то привычнее чтоли...
На фотках всё есть...
Спасибо.

Изображение Изображение Изображение
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Сообщение azhel12 »

Могу не совсем верно оперировать терминами, но SysTick - это не про STM, а про ARM вообще, маски искать надо в ARM-овских заголовках (core_cm3 в вашем случае).

Изображение
Реклама
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Что-то не получается... Не срабатывает прерывание у меня. Настройки вроде правильные а хендлере переменная не инкрементируется. Что-то где-то...
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

В CMSIS есть функция uint32_t SysTick_Config(uint32_t ticks). Либо используйте её, либо посмотрите как она внутри устроена.
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вс мар 27, 2022 09:38:17

Сообщение aleksey chilov »

Изображение

Добавлено after 38 seconds:
Может что в настройках не то?
Реклама
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Вс июл 30, 2023 14:12:33

Сообщение NotoriousCoder) »

Ну так смотрите, есть бит SysTick_CTRL_ENABLE_Msk, Вы его зачем то очищаете, ставите SysTick_CTRL_TICKINT_Msk и думаете, почему не работает. Я в своем проекте (правда у меня cm4, но мне кажется, что тут одинаково будет) делаю вот так:

Код: Выделить всё

static bool SysTick_Init(uint32_t ticks){
	/* LOAD register has only 24 bits */
	if (ticks > 0x00FFFFFF || ticks < 1) return 1;
	SysTick->LOAD = ticks;
	SysTick->VAL = 0; /* Writing any number would clear VAL register */
	SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk
			| SysTick_CTRL_TICKINT_Msk
			| SysTick_CTRL_ENABLE_Msk;
	return 0;

Добавлено after 4 minutes 42 seconds:
С помощью TICKINT Вы включаете прерывания (которые потом в SysTick_Handler обрабатываете), а с помощью ENABLE, каким бы это удивительным не казалось, Вы просто включаете сам таймер
Реклама
Ответить

Вернуться в «ARM»