Professional Documents
Culture Documents
Ngọc Tuấn
NGẮT LÀ GÌ
Ngắ t (Interrupt) có thể hiểu là 1 tín hiệ u khẩ n cấ p gử i đến bộ vi xử lý,
yêu cầ u bộ vi xử lý tạ m dừ ng cá c cô ng việc đang thự c hiện để nhảy đến 1
nơi khá c thự c hiệ n mộ t chương trình khá c (cô ng việc khá c). Chương trình
này đượ c gọ i là trình phụ c vụ ngắ t (ISR: Interrupt Service Routine). Sau
khi kết thú c chương trình trong ngắ t. CPU sẽ quay về vị trí trướ c đó để
thự c hiện tiếp nhiệ m vụ cò n đang dang dở .
Ngọc Tuấn
HOẠ T ĐỘ NG CỦ A NGẮT
ISR
MAIN MAIN
Ngọc Tuấn
NGẮT NGOÀI
Ngọc Tuấn
NGẮT NGOÀ I
STM32F103 có 16 line ngắt ngoài riêng biệt.
LineX (EXTI0) sẽ chứa ngắt cho các chân Px của các
Port.
Ví dụ: Line0 bao gồm ngắt ở các chân PA0, PB0, …,
Line1 bao gồm các chân PA, PB,…
Ngọc Tuấn
NGẮT NGOÀ I
Khi có sự chuyển đổi mức logic trên chân chân ngắt thì một sự kiện ngắt sẽ sinh ra. Khi đó bộ
NIVC sẽ kiểm tra xem ngắt xảy ra ở line nào để chạy vào chương trình trình ngắt tương ứng.
ISR ISR
Ngọc Tuấn
CẤ U HÌNH NGẮT TRÊ N CUBE
Bước 1: Cấu hình bộ dao động, chế độ debug…
Ngọc Tuấn
CẤ U HÌNH NGẮT TRÊ N CUBE
Bước 3: Cấu hình chế độ ngắt
GPIO Pull-up/Pull-down: Chọn trở nội kéo lên nguồn hay xuống đất.
Ngọc Tuấn
CẤ U HÌNH NGẮT TRÊ N CUBE
Bước 4: Cho phép ngắt và thiết lập ưu tiên ngắt
Vào mục NVIC, tích vào ô Enable và có thể thiết lập ưu tiên
ngắt.
Ngọc Tuấn
CÁ C MỨ C ƯU TIÊ N NGẮT
STM32 có rất nhiều ngắt khác nhau và được quản lí bởi NVIC (Nested Vetor Interrupt
Controller). Giả sử khi có 1 chương trình ngắt đang thực hiện mà lại có 1 ngắt khác yêu
cầu thì điều gì sẽ xảy ra ?
Có 2 loại mức ưu tiên ngắt: Preemption Priority và Sub Priority
• Preemption Priority: càng thấp thì độ ưu tiên càng cao.
• Sub Priority Priority: càng cao thì độ ưu tiên càng cao
Ngọc Tuấn
HOẠ T ĐỘ NG NGẮT LỒ NG NHAU
Khi 2 ngắt xảy ra cùng 1 thời điểm. Ngắt nào có độ ưu tiên cao hơn thì thực hiện trước.
Ngọc Tuấn