Перейти к содержанию
    

Помогите разобраться с индуистким кодом STM32CubeMX

Как то я затянул с освоением ARMов, все AVR да С51. Но работодатели нынче все требуют опыт STM32, так что хочу быть в тренде.

Раздобыл оценочную плату на STM32F207, слил STM32CubeMX+ Keil.

 

Первое впечатление - ООО! все очень круто, так же просто и удобно как в CodevisionAVR, в STM32CubeMX расставляем галочки на периферии, задем тактирование и получаем кейловский проект со всеми инициализациями.

Но как только я попытался помигать диодом радость сменилась болью, не понятно как пользоваться этим кодом который сгенерил STM32CubeMX.

 

Есть ли документация на функции которые он генерит (ну на подобии как это сделано в CooCox)? или тупо рыться по исходникам, которые он сгенерил и читать из них?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть документы Description of STM32F1xx HAL drivers - STMicroelectronics и Description of STM32F4xx HAL drivers -

STMicroelectronics, а для F2 похоже нет.

Можно же вовсе не использовать cube. Меня останавливает то что там отвратно сделан прием по UART. Я пользуюсь SPL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть документы Description of STM32F1xx HAL drivers - STMicroelectronics и Description of STM32F4xx HAL drivers -

STMicroelectronics, а для F2 похоже нет.

Можно же вовсе не использовать cube. Меня останавливает то что там отвратно сделан прием по UART. Я пользуюсь SPL

О СПАСИБО. Думаю различий там нет.

А вообще после кода типа PORTB.0=1 для AVR, код HAL_GPIO_WritePin (GPIOB, GPIO_PIN_1, GPIO_GPIO_BIT_SET) вызывает мягко говоря культурный шок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вообще после кода типа PORTB.0=1 для AVR, код HAL_GPIO_WritePin (GPIOB, GPIO_PIN_1, GPIO_GPIO_BIT_SET) вызывает мягко говоря культурный шок

Никто не мешает Вам написать свои макросы как Вам удобнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О СПАСИБО. Думаю различий там нет.

А вообще после кода типа PORTB.0=1 для AVR, код HAL_GPIO_WritePin (GPIOB, GPIO_PIN_1, GPIO_GPIO_BIT_SET) вызывает мягко говоря культурный шок

 

Пишите так

#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)

#define GreenOn     sbit(GPIOC->ODR,9)
#define GreenOff    cbit(GPIOC->ODR,9)
#define GreenFlp    fbit(GPIOC->ODR,9)
#define BlueOn      sbit(GPIOC->ODR,8)


void InitLED(void) {
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    //    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8;
    //    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    //    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    //    GPIO_Init( GPIOC , &GPIO_InitStructure);
    GPIOC->CRH &= 0xFFFFFF00;
    GPIOC->CRH |= (0 << 2) | (GPIO_Speed_2MHz);
    GPIOC->CRH |= ((0 << 2) | (GPIO_Speed_2MHz)) << 4;
    GreenOn;
    BlueOff;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишите на с++, stm32tpl - образец компактности и лаконичности!

 

typedef Pin<'C', 9> GreenLed;
GreenLed::Mode (OUTPUT);
GreenLed::On();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никто не мешает Вам написать свои макросы как Вам удобнее.

Ну вот и я о том же, что от стандартного ANSI C остаются рожки да ножки, и получается индуисткий код из макросов который кроме автора никто не поймет - исходники то парой нужно сопровождать, причем так складывается что люди меняются. Уж лучше пусть будет хал(он же кал) - они хотя бы как выяснилось документированы. Ну только без холивара...

 

Еще вопрос. Есть среды разработки с генератором начального кода под арм32, пусть не стм, где бы обошлось без индуисткого кода? Хотя и стм32 с его кубом можно переварить.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишите на с++, stm32tpl - образец компактности и лаконичности!

 

typedef Pin<'C', 9> GreenLed;
GreenLed::Mode (OUTPUT);
GreenLed::On();

Вот это да? И это? Да уж.. О сколько нам открытий чудных... :tort:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...