|
|
  |
Помогите разобраться с индуистким кодом STM32CubeMX, Пришло время осваивать STM32 |
|
|
|
Mar 25 2016, 05:03
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345

|
Как то я затянул с освоением ARMов, все AVR да С51. Но работодатели нынче все требуют опыт STM32, так что хочу быть в тренде. Раздобыл оценочную плату на STM32F207, слил STM32CubeMX+ Keil.
Первое впечатление - ООО! все очень круто, так же просто и удобно как в CodevisionAVR, в STM32CubeMX расставляем галочки на периферии, задем тактирование и получаем кейловский проект со всеми инициализациями. Но как только я попытался помигать диодом радость сменилась болью, не понятно как пользоваться этим кодом который сгенерил STM32CubeMX.
Есть ли документация на функции которые он генерит (ну на подобии как это сделано в CooCox)? или тупо рыться по исходникам, которые он сгенерил и читать из них?
|
|
|
|
|
Mar 25 2016, 07:13
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345

|
Цитата(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) вызывает мягко говоря культурный шок
|
|
|
|
|
Mar 25 2016, 08:28
|
Местный
  
Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602

|
Цитата(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; }
|
|
|
|
|
Mar 25 2016, 13:52
|
Участник

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345

|
Цитата(jcxz @ Mar 25 2016, 13:08)  Никто не мешает Вам написать свои макросы как Вам удобнее. Ну вот и я о том же, что от стандартного ANSI C остаются рожки да ножки, и получается индуисткий код из макросов который кроме автора никто не поймет - исходники то парой нужно сопровождать, причем так складывается что люди меняются. Уж лучше пусть будет хал(он же кал) - они хотя бы как выяснилось документированы. Ну только без холивара... Еще вопрос. Есть среды разработки с генератором начального кода под арм32, пусть не стм, где бы обошлось без индуисткого кода? Хотя и стм32 с его кубом можно переварить.....
|
|
|
|
|
Mar 25 2016, 14:28
|
Частый гость
 
Группа: Участник
Сообщений: 132
Регистрация: 6-02-16
Из: г. Баку
Пользователь №: 90 364

|
Цитата(esaulenka @ Mar 25 2016, 15:35)  Пишите на с++, stm32tpl - образец компактности и лаконичности! Код typedef Pin<'C', 9> GreenLed; GreenLed::Mode (OUTPUT); GreenLed::On(); Вот это да? И это? Да уж.. О сколько нам открытий чудных...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|