PROGCONT.RU

Форма входа







Регистрация Вход/

Пример Пример Пример


STM32 для начинающих программистов, на каком языке говорят контроллеры.

Начинающий программист сталкивается с такой проблемой как выбор на чём писать программу, в интернете программисты STM контроллеров предлагают множество приёмов написания программ кто то на CMSIS(стандартный программный интерфейс микроконтроллера Cortex), кто то на SPL(стандартную периферийную библиотеку), кто то на HAL(уровень аппаратной абстракции) или кто то на LL(низкий уровень).

Но дело в том, что все выше перечисленное не является языками программирования они являются лишь вспомогательными функциями написанные на языке Си, то есть вы будете писать на языке Си и не как иначе.

А если захотите углубится в написании программ то выясните, что и язык Си является тоже вспомогательными функциями которые написанные на Ассемблере или проще говоря машинном языке.

Теперь давайте разберем все выше сказанное на живом примере, ниже простой код программы написанный с помощью функций HAL который просто изменяет состояние порта GPIOC вывода GPIO_PIN_6.


NO


HAL_GPIO_TogglePin( GPIOC, GPIO_PIN_6) функция HAL которая изменяет состояние вывода, давайте посмотрим как она выглядит.


NO


Тут мы видим как происходит работа с регистрами контроллера с помощью структур на языке Си.

Например функция odr = GPIOx->ODR; в переменную odr копируется из базового адреса порта у меня GPIOC плюс смещение ODR или проще говоря выходного регистра GPIOC_ODR.


NO


Все базовые адреса и смещения для регистров периферии хранятся в файле stm32f105xc.h. Ниже аббревиатура GPIOC определяется как структура и назначается ей базовый адрес порта который будет APB2PERIPH_BASE + 0x00001000UL.


NONO


Ниже описание структуры которую мы назначили порту. Что бы обратится к любому регистру порта нам нужно просто написать например GPIOС->ODR а в остальном все сделает компилятор, вычислит нужный адрес регистра.


NO


Некоторые скажут, что выше я описал программирование с помощью CMSIS нет это Си, CMSIS вообще не используется это заблуждения. Изучите файл CMSIS core_cm3.h и вы поймете, что про его структуры и функции вы вообще не знали и да это тоже библиотека только очень простая.

Делаем вывод, что бы научится программировать на Си, правильно писать программы и понимать, что вы делаете первым делом изучаем это язык и сможете понять как устроены библиотеки CMSIS, SPL, HAL и LL, что вам поможет в будущем когда начнете писать более сложные программы или создавать собственные библиотеки.

P.S Хотел написать про Ассемблер не множко, думаю будет лишнем если кого то заинтересует этот язык пишите в комментарии попробую ответить!


Комментариев нет  Только зарегистрированные пользователи могут оставлять комментарии!