Lap trinh vi dieu khien-Sơ lược về khối NVIC trong STM32
Xin chào các bạn!Hiện tại trong diễn đàn đang có bạn hỏi về vấn đề này nên mình tranh thủ làm 1 chủ đề nho nhỏ giới thiệu lap trinh co ban sơ lược về khối NVIC trong STM32 cho mọi người cùng tham khảo.
NVIC là cái chi ???
NVIC (Nested Vector Interrupt Controller). Đúng như tên gọi, bộ NVIC được phát triển nhằm hỗ trợ các ngắt xảy ra đồng thời, đang xử lý ngắt này thì có tín hiệu ngắt khác... và trong STM32 có 16 cấp độ ưu tiên ngắt.
Ưu điểm của NVIC ???
- Thời gian xử lý 1 ngắt đơn của NVIC rất nhanh. NVIC chỉ cần mất 12 chu kỳ lệnh - là khoảng thời gian để thực thi câu lệnh đầu tiên trong trình phục vụ ngắt từ khi ngắt được sinh ra và kể từ khi thực thi câu lệnh cuối cùng trong trình phục vụ ngắt đến khi quay lại chương trình chính.
- NVIC có sử dụng 1 số phương pháp xử lý nhiều nguồn ngắt để độ trễ giữa các ngắt là tối thiểu và để đảm bảo các ngắt có mức ưu tiên cao nhất được thực hiện trước.
Cấu hình và Sử Dụng NVIC ???
Để sử dụng NVIC các bạn cần phải qua 3 bước cấu hình như sau:
- Cấu hình bảng Vector ngắt:
HTML:
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
HTML:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- Hàm NVIC_PriorityGroupConfig() sử dụng để thiết lập nhóm ưu tiên ngắt và ý nghĩa của các tham số như sau:
+ NVIC_PriorityGroup_0 (dành hết 4 bit để thiết lập mức ưu tiên giữa các ngắt trong SubGroup)
+ NVIC_PriorityGroup_1 (dành 1 bit để thiết lập mức ưu tiên giữa các ngắt trong Group - 3 bit cho SubGroup)
+ NVIC_PriorityGroup_2 (dành 2 bit để thiết lập mức ưu tiên giữa các ngắt trong Group - 2 bit choSubGroup)
+ NVIC_PriorityGroup_3 (dành 3 bit để thiết lập mức ưu tiên giữa các ngắt trong Group - 1 bit cho SubGroup)
+ NVIC_PriorityGroup_4 (dành hết 4 bit để thiết lập mức ưu tiên giữa các ngắt trong Group)
- 2 hàm NVIC_IRQChannelPreemptionPriority và NVIC_IRQChannelSubPriority sử dụng để thiết lập mức ưu tiên giữa các ngắt trong các nhóm Group - SubGroup.
- Cuối cùng là bạn cho phép ngắt ngoại vi xảy ra:
Mã:
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
Chúc các bạn tu hoc lap trinh thành công!!!Nguồn Lap trinh vi dieu khien
0 nhận xét:
Đăng nhận xét