Em chào các anh ạ! Em đang học cách lập trình với stm32 ạ. Em đang tự viết chương trình sử dụng ngắt ngoài để thiết lập chế độ cho 1 cụm 4 led. Em đang có hướng làm là:
- Sử dụng 1 biết stage để chọn trạng thái với các TH tương ứng với giá trị của stage là:
- stage = 0 : tắt tất cả LED
- stage = 1 : LED chạy từ trái sang phải
- stage = 2 : LED chạy từ phải sang trái
- stage = 3 : Sáng so le
- Em sử dụng ngắt ngoài để thay đổi giá trị của stage như là : EXTI 0 để gán stage = 0;
EXTI 1 để tăng giá trị của stage; EXTI 2 để giảm giá trị của stage; - Để kiểm tra giá trị của stage, em sử dụng switch case, sau đó em thử sử dụng if
Nhưng em có 1 vấn đề là nếu em kiểm tra giá trị của stage trong hàm while(1) ở trong hàm main, thì khi có tác động của ngắt ngoài, LED sẽ phải hoàn thành hết chu trình của mình rồi mới có thể áp dụng trạng thái tiếp theo.
Tức là nếu LED em đang chạy từ trái sang phải, em ấn nút để sử dụng EXTI0, gán stage= 0, vậy cụm LED sẽ chạy hết từ LED 1 đến LED 4 rồi mới dừng lại. Em đang chưa nghĩ ra cách nào để cho nó dừng luôn được ạ.
Các anh giúp em với ạ ! Em cảm ơn nhiều ạ