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

 
 
> Помогите начинающему STM32+KEIL5+std peripheral library, Ошибка компиляци с STM32F10X_HD
sabrat
сообщение Nov 4 2015, 13:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 14-12-05
Пользователь №: 12 204



Доброго времения суток. Долгое время пытался подружится с STM32 после AVR и вот дошли руки и имеем первые грабли.
Суть проблемы такова. Пытаюсь прощупать архитектуру на камне STM32F103RET6. Среда для программирования KEIL v5+GCC+std peripheral library. С настройкой портов всё прошло нормально. После этого попытался разобратся с конфигурированием тактирования. Вот тут и начались проблемы.

Вот код инициализации тактирвоания (взят на просторах интернета как пример):

1. RCC_DeInit(); // сброс настроек тактирования
2. RCC_HSICmd(DISABLE); // выключение внутреннего генератора
3. RCC_HSEConfig(RCC_HSE_ON); // включение внешнего генератора
4. RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div1);// Предделитель PREDIV1: HSE перед множителем PLLMUL
5. RCC_PLLConfig(RCC_PLLSource_PREDIV1 ,RCC_PLLMul_3); // тактирование HSE с PREDIV1 8/1*3 = 24МГЦ
6. RCC_PLLCmd(ENABLE); // Включаем множитель PLL
7. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // Тактирование системной шины от множителя PLLMUL

После компиляции имеем ошибки в строках 4 и 5. Жалуется что это всё не задекларировано.
error: use of undeclared identifier `RCC_PLLSource_PREDIV1`

Полез рыться в stm32f10x_rcc.c и stm32f10x_rcc.h и заметил что для контроллеров STM32F10X_HD все функции закрыты, а открыты для Value Line контроллеров.

Например из stm32f10x_rcc.h:

#ifdef STM32F10X_CL
/* PREDIV1 clock source (for STM32 connectivity line devices) */
#define RCC_PREDIV1_Source_HSE ((uint32_t)0x00000000)
#define RCC_PREDIV1_Source_PLL2 ((uint32_t)0x00010000)

#define IS_RCC_PREDIV1_SOURCE(SOURCE) (((SOURCE) == RCC_PREDIV1_Source_HSE) || \
((SOURCE) == RCC_PREDIV1_Source_PLL2))
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
/* PREDIV1 clock source (for STM32 Value line devices) */
#define RCC_PREDIV1_Source_HSE ((uint32_t)0x00000000)

#define IS_RCC_PREDIV1_SOURCE(SOURCE) (((SOURCE) == RCC_PREDIV1_Source_HSE))
#endif

Попробовал, для подтверждения, поменять с свойствах проекта контроллер на любой из серии Value Line и всё отлично скомпелировалось.

Уже не знаю что и делать, потому обращаюсь за помощью.

Сообщение отредактировал sabrat - Nov 4 2015, 13:11
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:43
Рейтинг@Mail.ru


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