Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите разобраться с индуистким кодом STM32CubeMX
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
www...
Как то я затянул с освоением ARMов, все AVR да С51. Но работодатели нынче все требуют опыт STM32, так что хочу быть в тренде.
Раздобыл оценочную плату на STM32F207, слил STM32CubeMX+ Keil.

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

Есть ли документация на функции которые он генерит (ну на подобии как это сделано в CooCox)? или тупо рыться по исходникам, которые он сгенерил и читать из них?
uriy
Есть документы Description of STM32F1xx HAL drivers - STMicroelectronics и Description of STM32F4xx HAL drivers -
STMicroelectronics, а для F2 похоже нет.
Можно же вовсе не использовать cube. Меня останавливает то что там отвратно сделан прием по UART. Я пользуюсь SPL
www...
Цитата(uriy @ Mar 25 2016, 10:34) *
Есть документы 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) вызывает мягко говоря культурный шок
jcxz
Цитата(www... @ Mar 25 2016, 13:13) *
А вообще после кода типа PORTB.0=1 для AVR, код HAL_GPIO_WritePin (GPIOB, GPIO_PIN_1, GPIO_GPIO_BIT_SET) вызывает мягко говоря культурный шок

Никто не мешает Вам написать свои макросы как Вам удобнее.
mcheb
Цитата(www... @ Mar 25 2016, 11:13) *
О СПАСИБО. Думаю различий там нет.
А вообще после кода типа 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;
}
esaulenka
Пишите на с++, stm32tpl - образец компактности и лаконичности!

Код
typedef Pin<'C', 9> GreenLed;
GreenLed::Mode (OUTPUT);
GreenLed::On();
www...
Цитата(jcxz @ Mar 25 2016, 13:08) *
Никто не мешает Вам написать свои макросы как Вам удобнее.

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

Еще вопрос. Есть среды разработки с генератором начального кода под арм32, пусть не стм, где бы обошлось без индуисткого кода? Хотя и стм32 с его кубом можно переварить.....
AleksBak
Цитата(esaulenka @ Mar 25 2016, 15:35) *
Пишите на с++, stm32tpl - образец компактности и лаконичности!

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

Вот это да? И это? Да уж.. О сколько нам открытий чудных... tort.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.