Страница 1 из 1

STM32 Cube IDE CMSIS

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

Изображение Изображение Изображение

Re: STM32 Cube IDE CMSIS

Добавлено: Вс дек 03, 2023 20:15:05
azhel12
Могу не совсем верно оперировать терминами, но SysTick - это не про STM, а про ARM вообще, маски искать надо в ARM-овских заголовках (core_cm3 в вашем случае).

Изображение

Re: STM32 Cube IDE CMSIS

Добавлено: Пн дек 04, 2023 13:43:46
aleksey chilov
Что-то не получается... Не срабатывает прерывание у меня. Настройки вроде правильные а хендлере переменная не инкрементируется. Что-то где-то...

Re: STM32 Cube IDE CMSIS

Добавлено: Пн дек 04, 2023 14:03:37
VladislavS
В CMSIS есть функция uint32_t SysTick_Config(uint32_t ticks). Либо используйте её, либо посмотрите как она внутри устроена.

Re: STM32 Cube IDE CMSIS

Добавлено: Пн дек 04, 2023 14:12:39
aleksey chilov
Изображение

Добавлено after 38 seconds:
Может что в настройках не то?

Re: STM32 Cube IDE CMSIS

Добавлено: Ср дек 13, 2023 19:14:14
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, каким бы это удивительным не казалось, Вы просто включаете сам таймер