Stm32f4 xử lý tín hiệu số
Show Kit STM32F407 Discovery với vi điều khiển hiệu suất cao STM32F407VGT6, cho phép người dùng dễ dàng phát triển các ứng dụng xử lý tín hiệu số (hình ảnh, video…). Nó bao gồm một công cụ ST-LINK tích hợp sẵn trên bảng mạch giúp nạp chương trình, gỡ lỗi nhanh chóng. Hiện nay, Kit STM32F407 Discovery là loại kit được sử dụng rất nhiều ở các trường đại học, cao đẳng trong giảng dạy vi điều khiển ARM. Thông số kỹ thuật của Kit STM32F407
Phần mềm lập trìnhCác phần mềm được sử dụng để lập trình cho STM32F407 bao gồm:
Tài liệu hướng dẫn sử dụngTrước khi sử dụng Kit thì các bạn cần phải download 2 tài liệu theo đường link dưới đây:
https://drive.google.com/file/d/1BPcOV2SJvXbLgNK1jd8iUAs-gfwwZk2a/view?usp=sharing
https://drive.google.com/file/d/16CNoMZ1NxHB5CJOADaLeQS_Z1ipod_DZ/view?usp=sharing Trên vi điều khiển STM32F407VG có một bộ điều khiển ngắt/sự kiện ngoại gọi tắt là EXTI (External interrupt/event controller). EXTI bao gồm 23 bộ phát hiện sự kiện, từ đó khởi tạo nên các yêu cầu ngắt. Mỗi đường đầu vào có thể được cấu hình độc lập để lựa chọn kiểu là interrupt hay event và trigger event tương ứng (rising, falling hoặc cả 2). Mỗi đường ngắt cũng có thể được che một cách độc lập. EXTI được kết nối với bộ xử lý ngắt lồng nhau NVIC như sau: Bộ xử lý ngắt lồng nhau NVICNVIC (Nested Vector Interrupt Controller) là khối quản lý ngắt trên các dòng vi điều khiển dựa trên lõi ARM Cortex M4. Khi có một sự kiện và sự kiện đó được cấu hình ngắt, thì tất cả ngắt sẽ được đưa vào khối NVIC, và dựa trên nhiều yếu tố mà NVIC sẽ quyết định xem ngắt nào sẽ được thực thi để đưa CPU vào Interrupt Service Routine. Bộ điều khiển ngắt ngoại EXTI xử lý tất cả các tín hiệu yêu cầu ngắt đến từ tất cả các chân của vi điều khiển. Ngoài ra nó còn xử lý các yêu cầu ngắt đến từ các nguồn khác. Các yêu cầu ngắt được phân thành 23 đường ngắt khác nhau, trong đó các yêu cầu đến từ chân 0 của tất cả các port được xử lý trên line 0, các yêu cầu đến từ chân 1 của tất cả các port được xử lý trên line 1 v.v.. như mô tả ở hình dưới. Các đường ngắt khác nhau trên STM32F4 Discovery7 đường ngắt EXTI còn lại được nối như sau: • EXTI line 16 được nối vào PVD output • EXTI line 17 được nối vào RTC Alarm event • EXTI line 18 được nối vào USB OTG FS Wakeup event • EXTI line 19 được nối vào Ethernet Wakeup event • EXTI line 20 được nối vào USB OTG HS (configured in FS) Wakeup event • EXTI line 21 được nối vào RTC Tamper and TimeStamp events • EXTI line 22 được nối vào RTC Wakeup event Yêu cầu ngắt trên line n với n nhận giá trị từ 0 đến 4 được xử lý trong chương trình con xử lý ngắt có tên: void EXTIn_IRQHandler(void) Các yêu cầu ngắt trên các line từ 5 đến 9 được xử lý chung trong chương trình con xử lý ngắt: void EXTI9_5_IRQHandler(void). Các yêu cầu ngắt trên các line từ 10 đến 15 được xử lý chung trong chương trình con xử lý ngắt: void EXTI15_10_IRQHandler(void). Tín hiệu ngắt có thể được phân ra thành FALLING, RISING hoặc cả 2, tùy thuộc vào sự thay đổi mức hiệu điện thế. Các ngắt có thể có độ ưu tiên khác nhau. Khi một ngắt có độ ưu tiên cao hơn đang được xử lý thì các ngắt khác phải chờ. Ta gọi các ngắt đang chờ là PENDING INTERRUPT.
Mức ưu tiên ngắtNVIC trên chip ARM được dùng cho STM32F4 hỗ trợ cài đặt 16 mức độ ưu tiên của các ngắt: Chế độ chọn nhóm ngắt NVICSố n quyết định có bao nhiêu mức cấu hình ngắt cho Mức độ ưu tiên (Preemption Priority) và Sub-priority. Quy tắc hoạt động của mức độ ưu tiên ngắt như sau: 1. Khi cả hai ngắt có cùng mức độ ưu tiên Ngắt nào xảy ra trước sẽ được thực thi trước. 2. Hai ngắt khác Mức độ ưu tiên (Preemption Priority) Mức độ ưu tiên quyết định ngắt A có được phép thực thi khi ngắt B đang hoạt động hay không. 3. Hai ngắt khác Sub-priority Khi có một ngắt A đang được thực thi (với Mức độ ưu tiên lớn hơn B, C), cùng lúc đó hai ngắt B và C có cờ báo cần thực thi, thì sub-priority sẽ quyết định 2 ngắt đang chờ này cái nào sẽ được thực thi trước Để lập trình sử dụng ngắt ngoại, ta phải include các file sau từ thư viện CMSIS: stm32f4xx_syscfg.h, stm32f4xx_exti.h và misc.h. Việc cấu hình phải gồm 3 bước:
Để hiểu các dùng ngắt ngoại ta xem ví dụ sau: Ví dụ 1:
Ví dụ 2: |