реклама на сайте
подробности

 
 
> STM32 HAL, ...и чудеса
Cosworth
сообщение Feb 5 2015, 11:51
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 26-12-10
Пользователь №: 61 886



Всем доброго. Две структуры:
Код
RCC_OscInitTypeDef *oscSelector;
RCC_ClkInitTypeDef *clkSelector;

Заполняю поля:
Код
clkSelector->SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
clkSelector->ClockType = RCC_CLOCKTYPE_SYSCLK;
...
oscSelector->OscillatorType = RCC_OSCILLATORTYPE_HSE;
oscSelector->HSEState = RCC_HSE_ON;
...

В результате в отладчике, clkSelector заполняется как положено, oscSelector даже не меняется. Почему так? Если объявить RCC_OscInitTypeDef oscSelector; и заполнять так: oscSelector.ClockType = ... то все ок.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skripach
сообщение Feb 5 2015, 12:14
Сообщение #2


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Память то под структуры выделена или указатель в никуда?


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Cosworth
сообщение Feb 5 2015, 12:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 26-12-10
Пользователь №: 61 886



Цитата(skripach @ Feb 5 2015, 15:14) *
Память то под структуры выделена или указатель в никуда?

Ни для одной ни для другой ничего не выделял, собственно вот такой код:
Код
void systemClockInit()
{
    RCC_OscInitTypeDef *oscSel;
    RCC_ClkInitTypeDef *clk;
    GPIO_InitTypeDef *mco;
        
    oscSel->OscillatorType = RCC_OSCILLATORTYPE_HSE;
    oscSel->HSEState = RCC_HSE_ON;
    oscSel->PLL.PLLSource = RCC_PLLSOURCE_HSE;
    oscSel->PLL.PLLState = RCC_PLL_ON;
    oscSel->PLL.PLLM = 8;
    oscSel->PLL.PLLN = 192;
    oscSel->PLL.PLLP = RCC_PLLP_DIV4;
    oscSel->PLL.PLLQ = 4;
    HAL_RCC_OscConfig(oscSel);
    
    clk->SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    clk->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
    clk->AHBCLKDivider = RCC_SYSCLK_DIV1;
    clk->APB1CLKDivider = RCC_HCLK_DIV2;
    clk->APB2CLKDivider = RCC_HCLK_DIV2;
    HAL_RCC_ClockConfig(clk, FLASH_LATENCY_1);
    
    mco->Pin = GPIO_PIN_9;
    mco->Mode = GPIO_MODE_AF_PP;
    mco->Pull = GPIO_NOPULL;
    mco->Speed = GPIO_SPEED_HIGH;
    mco->Alternate = GPIO_AF0_MCO;
    HAL_GPIO_Init(GPIOC, mco);
    HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_1);
}

А разве объявление переменной TypeDef *q автоматически не резервирует область памяти с размером TypeDef? Никогда с таким не сталкивался.. Что характерно oscSel действительно указывает вникуда (0х00000000).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 13:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016