среда, 2 августа 2017 г.

Ошибка STM32CubeMX при генерации кода для stm32f10x.


При генерации кода STM32CubeMX по умолчанию отключает интерфейсы программирования SWD и JTAG для контроллеров stm3210x.

После прошивки контроллера в следующий раз приходится переключать выводы Boot0 и Boot1, чтобы перепрошить контроллер. дело вот в чем - куб по умолчанию добавляет строку 


__HAL_AFIO_REMAP_SWJ_DISABLE();

в функцию HAL_MspInit() в файл stm32f1xx_hal_msp.c 

Избежать этого можно выбрав подходящее значение на вкладке Pinout в Configuration --> Peripherals --> Sys --> Debug. Возможные значения :
- NoDebug, по умолчанию, отключает интерфейсы SWD и JTAG;
- SerialWire, отключает JTAG, включает SWD, подходит для программирования через ST-Link;
- JTAG(4 pin) и JTAG(5 pin) - включает JTAG и SWD, использует соответственно 4 или 5 проводов, без ресета и с ресетом соответственно;
- Другие варианты не рассматриваются.

Для использования с программатором ST-link наиболее подходящий режим SerialWire. 

Если микроконтроллер уже был запрограммирован с отключенными интерфейсами, то проще всего очистить содержимое флеш-памяти, используя USB-UART и программу STM Flash Loader Demonstrator. Подключившись к МК через виртуальный COM-порт и установив соответствующие уровни на ногах Boot0 и Boot1для запуска загрузчика, очистить содержимой флеш-памяти МК.

Скомпилировав программу с правильными настройками Debug, можно в дальнейшем многократно перезаписывать прошивку уже не попадая на такую ошибку.

Кстати, это ошибка похоже проявляется только на контроллерах stm32f10x. На stm32f40x данная ошибка уже не возникает.

Комментариев нет:

Отправить комментарий

Ошибка STM32CubeMX при генерации кода для stm32f10x.

При генерации кода STM32CubeMX по умолчанию отключает интерфейсы программирования SWD и JTAG для контроллеров stm3210x. После прошивки к...