2016-10-18 11 views
1

Так что я программирую TI Tiva C Launchpad (TM4C123GH6PM), чтобы просто изменить цвет светодиода на основе входа переключателя. Это должно быть относительно простым, но у меня возникают проблемы с разблокировкой моего желаемого порта F и написанием бит фиксации. Когда я иду писать биты CR (другими словами, чтобы включить коммутаторы), отладчик переходит прямо к «BusFault_Handler».TI TM4C - Почему установка GPIOCR идет прямо в BusFault?

Мой код на тот момент выглядит следующим образом:

#define GPIOLock_PortF (*(unsigned int*)0x40025520) 
#define GPIOCR_PortF (*(unsigned int*)0x40025524) 
#define Unlock ((unsigned int)0x4C4F434B) 
#define SWs ((unsigned int)0x11) 

int main(){ 

GPIOLock_PortF = Unlock; //undo GPIOLock to get to GPIOCR 
GPIOCR_PortF = SWs; //enable commit for switches 

Как только я пытаюсь запустить первую инструкцию по сборке для этой последней строки C ...

MOVS R0, #17 

... отладчик просто падает до «BusFault_Handler».

Может ли кто-нибудь увидеть что-то явно неправильное здесь? Я неправильно понял данные?

Спасибо!

ответ

0

Вы пропустили, чтобы включить часы для GPIOs для Портфа

инициализационная Процедура указывается в технической спецификации странице 656 здесь

http://www.ti.com/lit/ds/spms376e/spms376e.pdf

вы должны включить часы на порт F страницу 340.

#define SYSCTL_RCGC2_R (*(unsigned int *)0x400FE108)  
#define GPIOLock_PortF (*(unsigned int*)0x40025520) 
#define GPIOCR_PortF (*(unsigned int*)0x40025524) 
#define Unlock ((unsigned int)0x4C4F434B) 
#define SWs ((unsigned int)0x11) 

int main(){ 
    SYSCTL_RCGC2_R |= 0x00000020; // enable clock for PortF 
    GPIOLock_PortF = Unlock; //undo GPIOLock to get to GPIOCR 
    GPIOCR_PortF = SWs; //enable commit for switches 
+0

Ах, вот и все. В моем коде у меня было Clock Enable, но у меня было это после разблокировки, а не раньше. – PoGaMi

+0

В вашем опубликованном коде отсутствует Clock Enable: D – Uint32