Доброго времения суток. Долгое время пытался подружится с 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
|