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

 
 
> Помогите начинающему 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
 
Start new topic
Ответов
sabrat
сообщение Nov 4 2015, 13:36
Сообщение #2


Участник
*

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



C/C++ Define:

USE_STDPERIPH_DRIVER

Compiler control string:

-c --cpu Cortex-M3 -g -O0 --apcs=interwork --split_sections
-I D:\STM32_Projekts\HelloWordMDK5-2015-11-03\HelloWordMDK5\RTE
-I D:\STM32_Projekts\HelloWordMDK5-2015-11-03\HelloWordMDK5\RTE\Device\STM32F103RE
-I C:\Keil_v5\ARM\PACK\ARM\CMSIS\4.5.0\CMSIS\Include
-I C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.0.0\Device\Include
-I C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.0.0\Device\StdPeriph_Driver\inc
-I C:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.0.0\RTE_Driver
-D__UVISION_VERSION="516" -D_RTE_ -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -o ".\Objects\*.o" --omf_browse ".\Objects\*.crf" --depend ".\Objects\*.d"
Go to the top of the page
 
+Quote Post



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

 


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


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