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

 
 
> STM32F407IG6 и Keil, При создании проекта keil тянет за собой startup_stm32f4xx.s
sidy
сообщение Jul 5 2012, 14:39
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Здраствуйте. Уважаемые форумчане, начинаю пробовать MCU STM32F407IG6 для этого скачал и установил Keil MDK-ARM ver. 4.53 с ограничением кода в 32 кБ. При создании нового проекта (new uVision project) keil предлагает подтянуть файл startup_stm32f4xx.s который в свою очередь ссылается на system_stm32f4xx.c. В файле system_stm32f4xx.c содержится инициализация HSE и PLL. После запуска отладки при входе в функцию main сразу происходит вход в system_stm32f4xx.c и соответсвенно инициализация HSE и PLL. После этого уже не представляется возможным произвести переинициализацию HSE и PLL по своему усмотрению (Поскольку HSE задействован как SYSCLK и бит HSE_ON сбросить нельзя). Если не подключать к проекту файл startup_stm32f4xx.s то keil ругается следующим образом:
main.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
main.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'.
Итак вопрос: поскольку я только начинаю пробовать STM32F407IG6 как мне произвести инициализацию системы тактирования. Т.е. я сперва хочу использовать только HSE - внешний кварц частотой 25 МГц, без PLL, затем в другом проекте или в этом же задействовать PLL и сконфигурировать его по своему усмотрению.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PoReX
сообщение Jul 17 2012, 06:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Цитата(sidy @ Jul 13 2012, 16:32) *
Код
int main (void) {                    
    while(1){
        USART3->DR=170;
        while((USART3->SR&USART_SR_TXE)==0){};
            USART3->SR&=~USART_SR_TC;
};
}

По идее очистка флага TC в данном случае не обязательна, т.к выполняется последовательность чтения из SR и записи в DR. В этом случае TC сбрасывается сам. Учтите, что TXE показывает состояние DR, а не завершение передачи. Вообще правильно ли настроена скорость UART'а?

Цитата(sidy @ Jul 13 2012, 16:32) *
Проблема заключается в следующем: смотрю в отладчике значение регистра USART3->DR, данное значение всегда=0 и на ножке USART3 tx всегда единица, т.е. передачи нет.

Ножку tx чем смотрите? Осциллографом надеюсь?
Цитата(sidy @ Jul 13 2012, 16:32) *
И еще вопрос по поводу отладчика в Keil когда я ставлю точку останова в прерывании от TIM7 после строки i1=TIM7->CNT; То значение i1 в окне Watch1 i1=0; а значение TIM->CNT в View->System Viewer -> TIM7 совершенно произвольное - не совсем понятно с чем это связанно.

Оно не произвольное, просто когда вы останавливаетесь на любой строчке кода в отладке, переферия продолжает работать, приостанавливается только выполнение кода. Соответственно таймер продолжает считать. Да и все окна в keil'e (local, watch, memory.....) обновляются с периодом ~1 сек. По это и получаются разные значения в CNT. Кстати по этой же причине можете и не увидеть дерганье ножкой TX через отладчик.


Сообщение отредактировал PoReX - Jul 17 2012, 06:51


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 07:48
Рейтинг@Mail.ru


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