|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Jan 14 2017, 12:37
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(VictorR @ Jan 14 2017, 12:51)  Может дело в той части SystemInit() где производятся манипуляции с VTOR ? Весьма вероятно. В процессе инициализации не забывайте: VTOR = (int32u)&__vector_table; // Vector Table Relocation А __vector_table должна быть объявлена в startup_stm32f10x_hd_vl.s Я тоже из CMSIS использую только хидер с объявлениями регистров и стартап кастрированный, проблем нет. Да и ещё заглушки поставить на стандартные исключения не забудьте.
|
|
|
|
|
Jan 15 2017, 10:20
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-03-05
Пользователь №: 3 738

|
Цитата(amiller @ Jan 14 2017, 15:37)  Весьма вероятно. В процессе инициализации не забывайте: VTOR = (int32u)&__vector_table; // Vector Table Relocation А __vector_table должна быть объявлена в startup_stm32f10x_hd_vl.s Я тоже из CMSIS использую только хидер с объявлениями регистров и стартап кастрированный, проблем нет. Да и ещё заглушки поставить на стандартные исключения не забудьте. Можно подробнее про заглушки? Цитата(AHTOXA @ Jan 14 2017, 19:07)  Дык, надо же сбрасывать прерывание. Так я и сбрасываю записью в USART1_DR Цитата(scifi @ Jan 14 2017, 18:16)  А если внутрисхемным отладчиком посмотреть? Отладчика, к сожалению, пока нет.
|
|
|
|
|
Jan 15 2017, 12:58
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(VictorR @ Jan 15 2017, 14:20)  Можно подробнее про заглушки? В простейшем случае так: CODE void NMI_Handler(void) {while(1);} void HardFault_Handler(void) {while(1);} void MemManage_Handler(void) {while(1);} void BusFault_Handler(void) {while(1);} void UsageFault_Handler(void) {while(1);} void SVC_Handler(void) {while(1);} void DebugMon_Handler(void) {while(1);} void PendSV_Handler(void) {while(1);}
Индикацию какую нибудь добавьте. Чтобы знать куда улетаете, если возникают исключения.
Сообщение отредактировал amiller - Jan 15 2017, 13:01
|
|
|
|
|
Jan 15 2017, 17:30
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-03-05
Пользователь №: 3 738

|
Почему-то мой обработчик прерывания USART1_IRQHandler() находится по адресу 0x8000606, а соответствующий вектор указывает на 0x8000607. Может в этом дело?
|
|
|
|
|
Jan 15 2017, 18:38
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(amiller @ Jan 15 2017, 15:58)  Индикацию какую нибудь добавьте. Чтобы знать куда улетаете, если возникают исключения. Ставить кучу заглушек на все прерывания не обязательно. Младшие 8 бит PSR содержат номер текущего прерывания, так что одного DefaultHandler с бесконечным циклом достаточно для идентификации всех прерываний. Цитата(VictorR @ Jan 15 2017, 20:30)  Почему-то мой обработчик прерывания USART1_IRQHandler() находится по адресу 0x8000606, а соответствующий вектор указывает на 0x8000607. Может в этом дело? Единица в младшем бите адреса перехода указывает, что переход происходит на Thumb код, а не ARM код, так и должно быть.
|
|
|
|
|
Jan 17 2017, 14:33
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-03-05
Пользователь №: 3 738

|
Единица в младшем бите адреса перехода указывает, что переход происходит на Thumb код, а не ARM код, так и должно быть. [/quote]
Всем спасибо! Заработало. Пришлось еще вставить
setena1->SETENA37=1;
Еще один вопрос. Можно ли из IAR-a через ST-LINK прошивать контроллер не входя в режим debug ?
|
|
|
|
|
Jan 17 2017, 19:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(VictorR @ Jan 17 2017, 21:33)  Еще один вопрос. Можно ли из IAR-a через ST-LINK прошивать контроллер не входя в режим debug ? Предварительно в Project -> Options -> Debugger -> Download поставить галку Use flash loader(s). Заливать через Project -> Download -> Download active application. В Tools -> Options можно назначить на эту команду хоткей.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Jan 19 2017, 14:31
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-03-05
Пользователь №: 3 738

|
Цитата(SSerge @ Jan 17 2017, 22:17)  Предварительно в Project -> Options -> Debugger -> Download поставить галку Use flash loader(s). Заливать через Project -> Download -> Download active application.
В Tools -> Options можно назначить на эту команду хоткей. Спасибо, прошивается. Но запускается только после внешнего ресета.
|
|
|
|
|
Jan 19 2017, 17:27
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(VictorR @ Jan 19 2017, 21:31)  Спасибо, прошивается. Но запускается только после внешнего ресета. Есть такая фигня, не поборол. Сделал через Tools запуск командного файла, а в нём консольной ST-LINK_CLI.exe. Там можно явно указать что делать после прошивки.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Jan 21 2017, 08:25
|
Участник

Группа: Участник
Сообщений: 34
Регистрация: 28-03-05
Пользователь №: 3 738

|
Цитата(SSerge @ Jan 19 2017, 20:27)  Есть такая фигня, не поборол. Сделал через Tools запуск командного файла, а в нём консольной ST-LINK_CLI.exe. Там можно явно указать что делать после прошивки. А можно сделать так, чтобы IAR с проектом на одном компьютере, а ST-LINK с контроллером на другом и связывается с первым по RDP ?
|
|
|
|
|
Jan 21 2017, 08:50
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (VictorR @ Jan 21 2017, 10:25)  А можно сделать так, чтобы IAR с проектом на одном компьютере, а ST-LINK с контроллером на другом и связывается с первым по RDP ? Можно. Только не IAR, а gdb, не stlink.exe, а openocd, не RDP, а TCP
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|