MIP201DễKỳ 7Chuyên ngành Cập nhật 25/03/2026

Microcontroller Programming - MIP201

Lập trình vi điều khiển (Microcontroller Programming - MIP201) là một trong những cột mốc quan trọng trong lộ trình đào tạo kỹ sư IoT và hệ thống nhúng tại Đại học FPT. Môn học tập trung vào việc hiện thực hóa các dự án thực tế trên nền tảng kiến trúc Arm Cortex-M4 thông qua kit phát triển ST Nucleo F401RE và hệ sinh thái Mbed API (Mbed OS).

226Câu hỏi
2Bộ đề
1Chủ đề
5,01 đánh giá

Câu hỏi của môn

164/226 câuCòn 62
AFetch, Decode, Execute
BLoad Store, Compute
CWrite back, Memory, Execution
DAddress, Data Path, Control Logic
EFetch, Speculate, Stall
Lời giải
Cortex-M4 là một loại vi xử lý được sử dụng rộng rãi trong các ứng dụng điện tử. Để hiểu rõ hơn về quá trình hoạt động của nó, chúng ta cần biết về các giai đoạn chính trong pipeline của vi xử lý này. Các giai đoạn chính bao gồm Fetch, Decode và Execute. Fetch là giai đoạn đọc lệnh từ bộ nhớ, Decode là giai đoạn phân tích lệnh và xác định các bước cần thực hiện, Execute là giai đoạn thực hiện các bước đã được xác định. Những giai đoạn này được thực hiện liên tục và không ngắt quãng để đảm bảo hiệu suất cao của vi xử lý.
Mở trang câu hỏi này →
146Which function sets the PWM period specified in milliseconds (int)?4 lựa chọnDễ75% trả lời đúng
Apulsewidth_ms(int ms)
Bperiod_ms(int ms)
Cwrite(float value)
Dperiod(float seconds)
Lời giải
Để trả lời câu hỏi này, chúng ta cần hiểu về chức năng của các hàm trong thư viện điều khiển PWM. Hàm 'period_ms(int ms)' được sử dụng để đặt thời gian chu kỳ của tín hiệu PWM theo đơn vị mili giây. Điều này có nghĩa là hàm này sẽ thiết lập thời gian giữa hai chu kỳ liên tiếp của tín hiệu PWM.
Mở trang câu hỏi này →
147What component manages and prioritizes interrupts in Cortex-M processors?4 lựa chọnDễ100% trả lời đúng
AMemory controller
BDMA controller
CGPIO controller
DNVIC (Nested Vectored Interrupt Controller)
Lời giải
Trong các lựa chọn trên, phần tử nào chịu trách nhiệm quản lý và ưu tiên các sự kiện ngắt trong các bộ xử lý Cortex-M? Sự kiện ngắt là các sự kiện xảy ra trong hệ thống, chẳng hạn như nhấn nút, nhận tín hiệu từ thiết bị ngoại vi, v.v. Để xử lý các sự kiện ngắt này, các bộ xử lý Cortex-M sử dụng một thành phần chuyên dụng gọi là NVIC (Nested Vectored Interrupt Controller). NVIC là một phần tử quan trọng trong kiến trúc của các bộ xử lý Cortex-M, giúp quản lý và ưu tiên các sự kiện ngắt để đảm bảo rằng các sự kiện quan trọng được xử lý trước.
Mở trang câu hỏi này →
148What is the purpose of the Memory Protection Unit (MPU) in Cortex-M4?4 lựa chọnDễ100% trả lời đúng
AProtecting memory regions and controlling access permissions
BIncreasing processor clock speed
CManaging peripheral communication
DStoring temporary program variables
Lời giải
Đơn vị bảo vệ bộ nhớ (Memory Protection Unit - MPU) trong Cortex-M4 có mục đích chính là bảo vệ các vùng bộ nhớ và kiểm soát quyền truy cập. Điều này giúp ngăn chặn các chương trình hoặc phần mềm độc hại từ việc truy cập vào các vùng bộ nhớ nhạy cảm hoặc không được phép. Ngoài ra, MPU cũng cho phép lập trình viên phân vùng bộ nhớ và chỉ định quyền truy cập cho từng vùng, giúp tăng cường bảo mật và ngăn chặn các lỗi do truy cập bộ nhớ không đúng cách. Điều này đặc biệt quan trọng trong các ứng dụng yêu cầu độ tin cậy và bảo mật cao, như các hệ thống điều khiển tự động, thiết bị y tế và các ứng dụng quân sự.
Mở trang câu hỏi này →
AFrequency and period
BStart time and stop time
CDelay time and rise time
DOn time and off time
EPulse time and cycle time
Lời giải
PWM (Quét Mức Tần Số) được sử dụng để thay đổi tỷ lệ giữa hai thời gian cụ thể trong một chu kỳ lặp lại. Cụ thể, PWM được sử dụng để điều khiển tỷ lệ giữa thời gian bật (On time) và thời gian tắt (Off time) trong một chu kỳ. Điều này cho phép chúng ta điều khiển cường độ của tín hiệu đầu ra. Ví dụ, nếu chúng ta muốn giảm cường độ của tín hiệu, chúng ta có thể tăng thời gian tắt và giảm thời gian bật. Ngược lại, nếu chúng ta muốn tăng cường độ của tín hiệu, chúng ta có thể giảm thời gian tắt và tăng thời gian bật. Tỷ lệ giữa thời gian bật và thời gian tắt được gọi là tỷ lệ PWM (PWM Duty Cycle).
Mở trang câu hỏi này →
AUniversal Asynchronous Receiver/Transmitter (UART)
BInter-integrated Circuit (12C)
CAll three protocols are synchronous
DSerial Peripheral Interface (SPI)
EBoth SPI and 12C
Lời giải
Serial communication là một phương thức truyền thông dữ liệu qua một đường truyền duy nhất. Trong đó, Universal Asynchronous Receiver/Transmitter (UART) là một giao thức truyền thông không đồng bộ, nghĩa là nó không cần một dây đồng hồ riêng biệt. Điều này khác với các giao thức đồng bộ khác như Inter-integrated Circuit (I2C) và Serial Peripheral Interface (SPI). UART sử dụng một tín hiệu đồng bộ được tạo ra từ tín hiệu dữ liệu để đồng bộ hóa quá trình truyền thông. Điều này cho phép UART hoạt động mà không cần dây đồng hồ riêng biệt. Vì vậy, UART được coi là một giao thức truyền thông không đồng bộ.
Mở trang câu hỏi này →
151What type of resources does the Mbed Hardware Development Kit (HDK) provide?4 lựa chọnDễ100% trả lời đúng
ANetwork simulation models
BSoftware libraries only
CHardware design resources such as schematics and board files
DOperating system kernels
Lời giải
Mbed Hardware Development Kit (HDK) là một bộ công cụ hỗ trợ phát triển phần cứng. Nó cung cấp các tài nguyên thiết kế phần cứng như bản vẽ mạch điện (schematics) và tệp tin thiết kế bảng mạch (board files). Điều này cho phép các nhà phát triển tạo ra các thiết bị và hệ thống phần cứng dựa trên các yêu cầu và yêu tố cụ thể của dự án. HDK cũng hỗ trợ việc mô hình hóa và thử nghiệm các thiết bị và hệ thống phần cứng trước khi sản xuất. Điều này giúp giảm thiểu thời gian và chi phí phát triển, cũng như đảm bảo chất lượng của sản phẩm cuối cùng.
Mở trang câu hỏi này →
152What is the typical definition of an embedded system?, according to the sources ?5 lựa chọnTrung bình65% trả lời đúng
AA system exclusively implemented using Microprocessors (CPUs) without integrated memory
BA computer unit specialized for cloud computing and big data processing
CA large mechanical or electrical system used in industrial settings
DA general-purpose computing device supporting instruction fetching, decoding, and executing.
EAn application-specific computer system interacting with its environment
Lời giải
Một hệ thống được tích hợp vào một thiết bị hoặc hệ thống khác, có nhiệm vụ thực hiện một chức năng cụ thể. Theo các nguồn, định nghĩa thông thường của một hệ thống tích hợp (embedded system) là một hệ thống máy tính được thiết kế để thực hiện một chức năng cụ thể, tương tác với môi trường xung quanh. Ví dụ, hệ thống điều khiển nhiệt độ trong nhà, hệ thống âm thanh trong ô tô, hoặc hệ thống điều khiển robot đều là các hệ thống tích hợp. Chúng thường được thiết kế để hoạt động độc lập, không cần người dùng trực tiếp tương tác với chúng.
Mở trang câu hỏi này →
ATo maintain a desired system set point
BTo increase memory capacity
CTo disable the controller
DTo store environmental data permanently
Lời giải
Trong hệ thống điều khiển vòng kín, mục đích chính của việc điều chỉnh đầu ra dựa trên dữ liệu cảm biến là duy trì một điểm tham chiếu mong muốn cho hệ thống. Điều này có nghĩa là hệ thống sẽ liên tục theo dõi và điều chỉnh đầu ra để đảm bảo rằng nó luôn ở trong phạm vi cho phép. Điều này rất quan trọng trong các ứng dụng như điều khiển nhiệt độ, áp suất, lưu lượng, v.v. Mục đích chính là duy trì hệ thống hoạt động một cách ổn định và hiệu quả.
Mở trang câu hỏi này →
ABlocked
BRunning
CWaiting
DReady
EInactive
Lời giải
Trong API Mbed, nếu một luồng (thread) đã bị hủy (terminated) hoặc chưa được tạo (chưa được tạo) thì trạng thái của nó là gì? Trạng thái của một luồng trong hệ thống đa luồng (multi-threading) có thể được mô tả bằng các trạng thái khác nhau. Tuy nhiên, nếu một luồng đã bị hủy hoặc chưa được tạo, thì nó không thể được coi là đang chạy (Running), đang chờ đợi (Waiting) hoặc sẵn sàng (Ready) để thực hiện các tác vụ. Thay vào đó, trạng thái của nó được gọi là trạng thái không hoạt động (Inactive). Điều này có nghĩa là luồng đó không còn hoạt động và không thể thực hiện bất kỳ tác vụ nào.
Mở trang câu hỏi này →
ANUCLEO-F411RE
BESP32
CArduino Uno
DRaspberry Pi Pico
EAdafruit Feather
Lời giải
Hệ thống phát triển NUCLEO-F411RE được sử dụng và giải thích về bố cục chân cắm trong Hình 1 dưới đây. Đây là một loại hệ thống phát triển dựa trên vi điều khiển STM32F411RE, được thiết kế để hỗ trợ việc học tập và phát triển ứng dụng. Hệ thống này cung cấp một số tính năng như khả năng tương tác với các thiết bị ngoại vi, khả năng lập trình và khả năng kiểm tra. Bố cục chân cắm của NUCLEO-F411RE được minh họa trong Hình 1, cho phép người dùng dễ dàng hiểu và sử dụng các chân cắm của hệ thống.
Mở trang câu hỏi này →
156What is the main benefit of CMSIS in embedded software development?5 lựa chọnDễ100% trả lời đúng
AIncreasing processor frequency
BReplacing hardware peripherals
CReplacing hardware peripherals
DEliminating the need for compilers
EStandardizing software interfaces across Cortex-M processors
Lời giải
CMSIS (Cortex Microcontroller Software Interface Standard) là một tiêu chuẩn phần mềm giúp thống nhất giao diện phần mềm trên các bộ xử lý Cortex-M. Nó cung cấp một bộ công cụ và thư viện phần mềm để giúp các nhà phát triển tạo ra phần mềm có thể tương tác với các bộ xử lý Cortex-M một cách dễ dàng. CMSIS giúp giảm thiểu thời gian phát triển và tăng cường khả năng tương thích giữa các phần mềm khác nhau trên các bộ xử lý khác nhau. Nó cũng giúp các nhà phát triển có thể tập trung vào việc phát triển phần mềm mà không cần phải lo lắng về việc tương tác với các bộ xử lý.
Mở trang câu hỏi này →
A3.3
B1.0
C2.0
D3.0
E0
Lời giải
Khi sử dụng DigitalIn interface để đọc giá trị điện áp trên một chân vào, nó sẽ trả về một giá trị integer đại diện cho điện áp đó. Tuy nhiên, giá trị này không phải là điện áp thực tế mà là một giá trị logic. Trong trường hợp điện áp trên chân vào là 3.3V, DigitalIn interface sẽ trả về giá trị 1.0. Điều này là vì DigitalIn thường sử dụng mức logic 5V hoặc 3.3V, và giá trị 1.0 đại diện cho mức logic cao (tương đương 3.3V).
Mở trang câu hỏi này →
158Where is the generated executable file (program image) typically stored?5 lựa chọnDễ100% trả lời đúng
AStack memory
BHeap memory
CPeripheral registers
DProgram memory (normally on-chip flash memory)
EExternal RAM (SRAM)
Lời giải
Ở câu hỏi này, chúng ta được hỏi nơi mà tập tin thực thi (program image) được tạo ra thường được lưu trữ. Để trả lời câu hỏi này, chúng ta cần hiểu về các loại bộ nhớ trong máy tính. Bộ nhớ stack (Bộ nhớ chồng) thường được sử dụng để lưu trữ thông tin về các hàm và các biến cục bộ. Bộ nhớ heap (Bộ nhớ đệm) thường được sử dụng để lưu trữ các biến động và các đối tượng. Bộ nhớ chương trình (Program memory) thường được sử dụng để lưu trữ mã chương trình và dữ liệu được sử dụng bởi chương trình. Bộ nhớ RAM (Bộ nhớ truy cập ngẫu nhiên) thường được sử dụng để lưu trữ dữ liệu tạm thời. Bộ nhớ flash (Bộ nhớ flash) thường được sử dụng để lưu trữ dữ liệu được sử dụng bởi chương trình. Trong trường hợp này, tập tin thực thi thường được lưu trữ trong bộ nhớ chương trình (Program memory), thường là bộ nhớ flash trên chip.
Mở trang câu hỏi này →
159Program Code and Constant data are usually stored in which type of memory?6 lựa chọnDễ85% trả lời đúng
ANon-volatile memories (e.g., FLASH)
BHeap data section
CHeap data section
DVolatile memories (e.g., SRAM)
EDynamic RAM (DRAM)
FStack data section
Lời giải
Bộ nhớ không lưu trữ tạm thời (non-volatile memory) là nơi lưu trữ mã chương trình và dữ liệu hằng số. Các ví dụ về bộ nhớ này bao gồm FLASH. FLASH là một loại bộ nhớ có khả năng lưu trữ dữ liệu trong thời gian dài mà không cần nguồn điện. Điều này làm cho nó trở thành lựa chọn lý tưởng để lưu trữ mã chương trình và dữ liệu hằng số vì chúng không thay đổi thường xuyên. Trong khi bộ nhớ lưu trữ tạm thời (volatile memory) như SRAM và DRAM cần nguồn điện để lưu trữ dữ liệu, bộ nhớ không lưu trữ tạm thời có thể giữ dữ liệu ngay cả khi nguồn điện bị cắt. Vì vậy, chương trình code và dữ liệu hằng số thường được lưu trữ trong bộ nhớ không lưu trữ tạm thời như FLASH.
Mở trang câu hỏi này →
ATwice the highest frequency of the input signal
BHalf of the signal frequency
CEqual to the signal frequency
DTen times the signal amplitude
Lời giải
Theo lý thuyết lấy mẫu Shannon-Nyquist, tần số lấy mẫu phải ít nhất là hai lần tần số cao nhất của tín hiệu đầu vào. Điều này có nghĩa là để tái tạo chính xác tín hiệu đầu vào, chúng ta cần lấy mẫu tín hiệu với tần số ít nhất gấp hai lần tần số cao nhất của tín hiệu. Nếu tần số lấy mẫu thấp hơn, tín hiệu lấy mẫu sẽ bị nhiễu xạ và không thể tái tạo chính xác. Ví dụ, nếu tín hiệu đầu vào có tần số cao nhất là 10 kHz, thì tần số lấy mẫu phải ít nhất là 20 kHz. Điều này đảm bảo rằng tín hiệu lấy mẫu sẽ không bị nhiễu xạ và có thể tái tạo chính xác.
Mở trang câu hỏi này →
APortIn
BBusIn
CDigitalInOut
DBusOut
EDigitalOut
Lời giải
Để kết hợp một số cổng DigitalIn để đọc chúng cùng một lúc, bạn cần sử dụng API BusIn. BusIn cho phép bạn đọc nhiều cổng vào cùng một lúc, giúp tăng tốc độ và hiệu suất của chương trình. Điều này đặc biệt hữu ích khi bạn cần đọc nhiều giá trị từ các cảm biến hoặc thiết bị ngoại vi. Ngoài ra, BusIn cũng giúp giảm thiểu số lượng cổng vào cần thiết, giúp tối ưu hóa thiết kế mạch điện.
Mở trang câu hỏi này →
162What does the C programming statement while(1) create?5 lựa chọnDễ93% trả lời đúng
AA timer event
BAn infinite loop
CA function call
DA prototype declaration
EA conditional statement
Lời giải
Câu lệnh while(1) trong C là một vòng lặp vô hạn. Nó được sử dụng để thực hiện một hành động hoặc một chuỗi hành động lặp đi lặp lại mãi mãi cho đến khi chương trình bị dừng. Vòng lặp vô hạn này thường được sử dụng trong các trường hợp như tạo một trình giả lập thời gian, tạo một trình giả lập chu kỳ, hoặc tạo một trình giả lập sự kiện. Khi chương trình gặp câu lệnh while(1), nó sẽ tiếp tục thực hiện các hành động trong vòng lặp cho đến khi chương trình bị dừng. Điều này có nghĩa là chương trình sẽ không bao giờ kết thúc, trừ khi có một lệnh dừng chương trình được thực hiện.
Mở trang câu hỏi này →
Aattach()
Bperiod()
Cread()
Dwrite()
EISR()
Lời giải
Trong vòng lặp while của hàm chính, hàm nào của Analogin được sử dụng để đọc giá trị của potentiometer?
Mở trang câu hỏi này →
A4-bit
B6-bit
C8-bit
D12-bit
E5-bit
Lời giải
Để trả lời câu hỏi này, chúng ta cần hiểu về cách hoạt động của màn hình hiển thị 7-segment. Màn hình này sử dụng các đoạn (segment) để tạo ra các số và ký tự khác nhau. Mỗi đoạn có thể được bật hoặc tắt để tạo ra các số và ký tự khác nhau. Để xác định số đoạn cần thiết để đại diện cho các giá trị khác nhau trên màn hình 7-segment, chúng ta cần xem xét số lượng số và ký tự có thể được tạo ra bằng cách sử dụng các đoạn. Mỗi số và ký tự có thể được tạo ra bằng cách sử dụng các đoạn khác nhau. Ví dụ, số 0 có thể được tạo ra bằng cách bật tất cả các đoạn, trong khi số 1 có thể được tạo ra bằng cách tắt tất cả các đoạn ngoại trừ đoạn trên cùng. Để đại diện cho tất cả các số và ký tự có thể được tạo ra, chúng ta cần ít nhất 7 đoạn (mỗi đoạn đại diện cho một số hoặc ký tự khác nhau). Tuy nhiên, để đại diện cho các giá trị khác nhau trên màn hình 7-segment, chúng ta cần ít nhất 7 * 2 = 14 đoạn (mỗi đoạn có thể được bật hoặc tắt). Nhưng trong thực tế, chúng ta chỉ cần 7 đoạn và một số bit để đại diện cho các trạng thái bật/tắt của các đoạn. Vì vậy, để đại diện cho các giá trị khác nhau trên màn hình 7-segment, chúng ta cần ít nhất 4 bit (mỗi bit đại diện cho một trạng thái bật/tắt của một đoạn). Tuy nhiên, để đảm bảo rằng màn hình có thể hiển thị tất cả các số và ký tự có thể được tạo ra, chúng ta cần ít nhất 7 * 2 = 14 bit. Nhưng trong thực tế, chúng ta chỉ cần 7 * 2 - 1 = 13 bit. Nhưng trong thực tế, chúng ta chỉ cần 7 * 2 - 1 = 13 bit. Nhưng trong thực tế, chúng ta chỉ cần 8 bit (mỗi bit đại diện cho một trạng thái bật/tắt của một đoạn).
Mở trang câu hỏi này →