Hỏi về Interrupt

Nguyentridung

Thành Viên PIF
#include <stdint.h>
#include <stdbool.h>
#include "inc/tm4c1233h6pm.h"
#include "driverlib/gpio.h"


void main() {
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
GPIO_PORTF_DIR_R |= 0x0E;
GPIO_PORTF_DEN_R |= 0x0F;
GPIO_PORTF_PUR_R |= 0x10;
GPIO_PORTF_IM_R |= 0x10;
GPIO_PORTF_DATA_R = 0x04;
while (1){
}
}
void PORTF_INTERRUPT(void){
if ((GPIO_PORTF_RIS_R & 0x10)== 0x10) GPIO_PORTF_DATA_R = 0x0E;
}
Em code như thế này với mục đích sử dụng ngắt port F, falling edge, nút nhấn SW1. Lúc build thì không có lỗi nhưng đổ code lên thì không chạy.
Anh cho em hỏi phần code của em sai chỗ nào và khắc phục như thế nào? Em cảm ơn
 

tungbk

Cố Vấn CLB
Staff member
E tham khảo 2 example projects: interrupt, timer.
Với lại e nên chuyển qua code dùng hàm trong driver TI cho mọi người dễ theo dõi.
 

hung303mc

Thành Viên PIF
Bạn phải thay đổi trong Status, ngay chỗ interrrupt của PORT bạn muốn thay đổi với cú pháp
IMPORT PORTF_INTERRUPT
DCD PORTF_INTERRUPT ; GPIO Port F
 

Nguyentridung

Thành Viên PIF
có phải sửa trong file starup_ccs.c?
Em coi trong cái project interrupts thì thấy sửa như vậy.
extern void PORTF_INTERRUPT(void);
.
.
.
PORTF_INTERRUPT, // GPIO Port F
Nó vẫn chưa chịu chạy!!!
 

Nguyentridung

Thành Viên PIF
Anh có thể cho em xin 1 đoạn code mẫu phần interrupt được không ạ. Do em đọc trong datasheet thì thấy phải config mấy thanh ghi mà không biết cú pháp config bằng hàm driver như thế nào!
 

Nguyentridung

Thành Viên PIF
Cảm ơn bạn nhiều, mình đã làm được ^^. Mọi người nếu ai chưa làm được tham khảo theo link trên nha
 
Top