Тыкаясь в спл а тем более в калокубе, вы ничего не осознаете. А сие
Цитата:
Библиотеки SPL и HAL позволяют разрабатывать программы без необходимости изучения МК на уровне регистров.
Мягко говоря лукавство, а по большому счету - ложь.
Для 103ьих - по умолчанию тактирование всей периферии выключено. За это отвечает домен RCC Reset and Clock Control[/b]
Открываем даташит , ищем диаграмму STM32F103xx performance line block diagram Где указано на какой шине какая периферия висит. GPIOC на APB2. Идем читать RM . Ищем регистры RCC, конкретно RCC_APB2ENR. (APB2ENable Registr)
Имена регистров образуются так - домен _ имя регистра . Так же образуются имена бит регистров домен_ имя регистра _ имя бита Это и есть стандарт CMSIS, и по этому стандарту прописаны и регистры и биты в хэдере.
Таким образом бит отвечающий за включение GPIOC - RCC_APB2ENR_IOPCEN
Ну и включаем GPIOC :
RCC->APB2ENR |=RCC_APB2ENR_IOPCEN;
Таким образом даже не нужно знать значение RCC_APB2ENR_IOPCEN, но если приспичит - все они прописаны в хэдере.
Последний раз редактировалось dosikus Вс авг 21, 2016 12:56:14, всего редактировалось 1 раз.
dosikus, программу можно написать используя библиотеки SPL или HAL и только при необходимости напрямую обращаясь к регистрам. Так что никакой лжи в моих словах нет.
СЦБист писал(а):
я пошел дальше и пришел к такой структуре
Найти эту структуру можно парой кликов мышкой. ПКМ по RCC и в меню выбрать "Найти объявление". Откроется файл stm32f10x.h со строкой
Код:
#define RCC ((RCC_TypeDef *) RCC_BASE)
Далее проделываем тоже самое кликнув по RCC_TypeDef и смотрим структуру в файле stm32f10x.h.
Чтобы было меньше вопросов по устройству МК нужно хотя бы поверхностно ознакомится с ядром ARM Cortex-M. Из литературы на русском можно посмотреть "Мартин М. Инсайдерское руководство по STM32".
"Программу" можно на тыкать и в аурдунье. Эффективно работать с железом через спл и калокуб нельзя. СЦБист, насколько я понимаю, хочет именно эффективно работать, а не копипастить чужие куски кода, непонятно как сляпанные. Вся прелесть стм в периферии , периферии не настолько сложной чтобы закрываться от нее сплней и калокубом.
СЦБист, я уже писал - проштудируйте сниппетсы для F0 а так же примеры кода в RM . И лучше вААще начните сразу с F0 .
Да и какие вам примеры нужны? Для SPI , UART я здесь уже выкладывал.
Ну без reference manual обойтись сложно, все таки там детально описаны все значения флагов управления, но можно и по SPL хеадерам. Для каждой фичи МК, есть своя собственная структура типа <фичя>_TypeDef, ну и поинтеры ADC1, ADC2, TIMx, ..., GPIOx,в большинстве случаев эта структура хорошо описана уже в хеадере, так само как и все возможные параметры к ней которые можно найти по названию регистра, например, для включения таймена #2 нужно установить бит CEN в TIM_CR1 в поинтере TIM2 со структорой TIM_TypeDef, а параметры к нему можно найти в хеадере по префиксу TIM_CR1_<имя нужного бита>
Код:
TIM2->CR1 |= TIM_CR1_CEN
, хотя такой метод з хеадерами не всигда прокатит для регистров с длинной больше одного бита:Спойлер
/** * @brief Initializes the ADCx peripheral according to the specified parameters * in the ADC_InitStruct. * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral. * @param ADC_InitStruct: pointer to an ADC_InitTypeDef structure that contains * the configuration information for the specified ADC peripheral. * @retval None */ void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct)
СЦБист, работу периферии вам не объяснит ни мануал на спл ни калокуб . Не занимайтесь фигнёй как эти товарищи. Что спл что калокуб содержат в себе примитивы аналоги софтодрочерства, в то время как периферия рассчитана на полную аппаратную работу.
Нужно ли знать , как реализована начинка библиотечных функций ?
Нет не обязательно, хотя вам никто не мешает
Например я никогда не использовал этот функционал, а только структуры и переменные с параметрами для регистров, так получаеться бистреє, и меньше кода(если вам важна скорость)
Они ниавные чукотские юноши считают, что в тех говнолибах, что они юзают реализован весь функционал, ну пусть так думают. Теперь дело за вами, или вмести с ними гнить в ардуиновском болоте или плодотворно изучать платформу.
Каждому свое, кому то больше по душе осознанность, лаконичность и быстродействие а кому то достаточно базового функционала с красивым конструктором с графическим интерфейсом, валидацией, менюшками, все возможными значениями, куда нужно вставить только бизнес логику: СпойлерВыглядит очень даже симпатиШно, но цена этому - куча шаблонного/ненужного кода, и бесполезных "проверок на дурака" хотя наверное все рано или поздно приходят к истокам и "ручной" настройке...
Да нет, не тот уровень. Это скорее как работа с драйвером устройства - нужно четко осознавать взаимодействие драйвера с железом, чтобы корректно посылать и обрабатывать запросы. В Windows работа с железом через драйвера - это необходимость, и сделана по причине большой сложности и закрытости этого самого железа, и производитель согласен поставлять собственные драйвера лишь бы держать в тайне железо. У STM32 же периферия простая, открытая и хорошо задокументирована, поэтому и всякие HAL - это излишество.
Немного оффтопа )) Сейчас время такое - все компании повышают уровень абстракции. На больших ОС поначалу драйвера, потом API, теперь вовсю толкают фреймворки, чтобы как можно больше изолировать разработчика от железа. Это компаниям выгодно, поскольку позволяет со временем совсем закрывать для разработчиков низкоуровневый доступ. Скажем, если львиная доля программистов в мире полностью пересядут на дотнет, то это позволит мелкомягким изменять нижележащую Windows как им заблагорассудится. Вот перепишут начисто API и закроют MSDN, сделают её конфиденциальной и платной - тогда хорошо будет? Не думаю. Такая же "голубая" мечта и у STM - закрыть прямой доступ к периферии. Это им выгодно. Дадут вам в зубы корявый индийский HAL - и радуйтесь.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения