Поиск
Показаны результаты для тегов 'gd32f103'.
-
Собственно вопрос в заголовке. По умолчанию адреса такие: С адресами по умолчанию проект работает. А я хочу так: Для смещённых адресов линкер-файл такой: ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08008000 0x0000BC00 { ; load region size_region ER_IROM1 0x08008000 0x0000BC00 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } RW_IRAM1 0x20000000 0x00005000 { ; RW data .ANY (+RW +ZI) } } В проекте со смещёнными адресами делаю смещение для регистра SCB->VTOR в файле gd32f10x_misc.h: #define NVIC_VECTTAB_RAM ((uint32_t)0x20000000U) /*!< RAM base address */ #define NVIC_VECTTAB_FLASH ((uint32_t)0x08008000U) /*!< Flash base address */ Заливаю проект, захожу в отладчик - проект виснет. Не доходит даже до смены значения в SCB->VTOR. Что ещё я не сделал?
- 5 ответов
-
- gigadevice
- keil
-
(и ещё 2 )
C тегом:
-
В проекте использую GigaDevice GD32F103RBT6. Настраиваю GPIO. Возникла проблема при настройке порта B пины 1 и 2. Процесс настройки выглядит следующим образом: 1) Настраиваю несколько пинов, отличных от PB1 и PB2. Всё проходит нормально. 2) Настраиваю PB2 на выход в режиме pushpull и вывожу лог. 1. Всё проходит нормально, на выходе осциллографом вижу лог. 1 и в отладке в соответствующих регистрах - соответствующие биты имеются. 3) Опять настраиваю несколько пинов, отличных от PB1 и PB2. Всё проходит нормально. 4) Настраиваю PB1 на вход с внутренней подтяжкой к питанию. Сначала чищу соответствующие биты в регистре GPIO_CTL0 (регистр определяющий режим работы вывода). В отладке вижу, что сбрасывается только то, что нужно. Затем в этом же регистре устанавливаю нужные мне биты. В отладке снова вижу, что устанавливается только то, что нужно. При этом в этот момент на осциллографе наблюдаю, что на пине PB2 (именно на PB2, я не описАлся) устанавливается лог. 0 !? КАК ПОЧЕМУ?! Что было сделано: 1) Попробовал после настройки PB1, снова настроить PB2 - не помогло. В отладке вижу, что в регистрах всё правильно, но осциллограф кажет на PB2 лог. 0. 2) Попробовал читать регистр GPIO_CTL0 и проверять, что в нём творится до настройки PB1 и после. Настройки для PB2 не меняются! 3) На плате ноги PB1 и PB2 не замыкаются. Ногу PB2 поднял - она ни с чем не соединена, но это не помогло. 4) Проверил проект на другой плате - всё работает также. 5) Проверил настройку других пинов - замечаний нет. Кто сталкивался с подобным? Что ещё попробовать? В чём проблема?