You are on page 1of 77

CÂU HỎI THI TRẮC NGHIỆM

Tên học phần: Kỹ Thuật Vi Xử Lý Mã học phần: ELE1317


Số tín chỉ: 03

Thứ Đáp Phương án trả lời Điểm


tự án
Nội dung câu hỏi
câu A B C D
hỏi
Chức năng chính của Gửi dữ liệu qua
1 Lưu trữ dữ liệu Hiển thị dữ liệu Xử lý dữ liệu 1
CPU là gì? mạng
Khối nào của CPU chịu
ALU
trách nhiệm thực hiện các RAM (Random ROM (Read-Only CU (Control
2 (Arithmetic 1
phép tính cơ bản như Access Memory) Memory) Unit)
Logic Unit)
cộng, trừ, nhân, chia?
Thành phần nào trong
CPU chịu trách nhiệm ALU
RAM (Random ROM (Read-Only CU (Control
3 điều khiển hoạt động của (Arithmetic 1
Access Memory) Memory) Unit)
máy tính và lấy dữ liệu từ Logic Unit)
bộ nhớ?
Trong kiến trúc CISC, Kiểm soát luồng
một lệnh có thể thực hiện Các phép tính chương trình Cả ba câu kia
4 Truy cập bộ nhớ 1
nhiều tác vụ khác nhau toán (Chuyển tới địa chỉ đều đúng
bao gồm: khác)
Kiến trúc RISC tập trung Tối ưu hóa hiệu Giảm độ phức tạp Điều khiển bộ
5 Tăng đa nhiệm 1
vào điều gì? suất xử lý của lệnh nhớ
6 ROM và RAM đều là ROM lưu trữ dữ ROM lưu trữ dữ ROM lưu trữ dữ ROM lưu trữ dữ 1
loại bộ nhớ trong máy liệu dùng cho liệu dùng cho liệu mà người liệu lưu trữ tạm
tính. Tuy nhiên, điểm việc khởi động các chương trình dùng nhập vào, thời, trong khi
khác biệt quan trọng nhất máy tính, trong ứng dụng, trong trong khi RAM lưu RAM lưu trữ dữ
khi RAM lưu trữ
dữ liệu làm việc khi RAM lưu trữ liệu dùng cho
trữ dữ liệu hệ
giữa chúng là gì? trong quá trình dữ liệu hệ điều việc khởi động
thống
hoạt động của hành máy tính
máy tính
Lưu các chương
Trong một hệ thống vi xử Lưu các hằng trình khởi động Lưu các chương
Lưu các dữ liệu
7 lý bộ nhớ ROM thường biến của chương hệ thống và quản trình ứng dụng 1
cần truy cập nhanh
được sử dụng để: trình lý các thiết bị nạp từ ổ cứng
ngoại vi
Lưu các chương
Trong một hệ thống vi xử Lưu các hằng và trình khởi động Lưu các chương
Lưu các dữ liệu
8 lý bộ nhớ RAM thường các biến của hệ thống và quản trình ứng dụng 1
cần truy cập nhanh
được sử dụng để: chương trình lý các thiết bị nạp từ ổ cứng
ngoại vi
BUS địa chỉ (Address Truyền dữ liệu
Điều khiển các Định vị ví trí sẽ
Bus) trong hệ thống vi xử giữa CPU với bộ Cả ba câu kia
9 chế độ hoạt động truyền dữ liệu với 1
lý được sử dụng để làm nhớ và cổng vào đều đúng
của hệ thống CPU
gì? ra
Trong một hệ thống vi xử Có tín hiệu chỉ
10 lý BUS địa chỉ là các tín Ngõ vào Ngõ ra Hai chiều vào, chỉ ra, hai 1
hiệu: chiều
Trong một hệ thống vi xử Có tín hiệu chỉ
11 lý BUS dữ liệu là các tín Ngõ vào Ngõ ra Hai chiều vào, chỉ ra, hai 1
hiệu: chiều
Có tín hiệu chỉ
Trong một hệ thống vi xử
vào, tín hiệu chỉ
12 lý BUS điều khiển là các Ngõ vào Ngõ ra Hai chiều 1
ra, và tín hiệu
tín hiệu:
hai chiều
13 BUS điều khiển (Control Truyền dữ liệu Điều khiển các Định vị ví trí sẽ Cả ba câu kia 2
Bus) trong hệ thống vi xử giữa CPU với bộ chế độ hoạt động truyền dữ liệu với đều đúng
lý được sử dụng để làm nhớ và cổng vào của hệ thống CPU
gì? ra
Vi xử lý không
Hệ thống vi xử thể hoạt động
lý thường sử một mình, nó cần Vi xử lý không
dụng cho các kết nối với bộ tích hợp các chức
ứng dụng lớn nhớ và vào ra để năng ngoại vi, như
Khác nhau cơ bản giữa vi hoặc đa năng. tạo thành hệ GPIO, UART, SPI, Cả ba câu kia
14 2
xử lý và vi điều khiển là: Còn vi điều thống vi xử lý. v.v. Còn vi điều đều đúng
khiển thưởng sử Còn vi điều khiển thường tích
dụng cho các khiển là một hệ hợp các thành
ứng dụng thống vi xử lý phần trên
chuyên dụng tích hợp trong
một IC
ALU thường thực hiện
Các phép so Các phép tính số Các phép tính Cả ba câu kia đề
15 các phép xử lý dữ liệu 2
sánh học logic đúng
nào?
Tín hiệu chọn một phép
16 tính thực hiện trong ALU Thanh ghi PC CU Vào ra Bộ nhớ 2
được cung cấp từ:
Khi CPU cấp
Khi vào ra nhận
Khi nào thì cổng vào ra đúng địa chỉ của Khi thiết bị
được dữ liệu cấp Cả ba câu kia
17 được mở để CPU truyền cổng vào ra và ngoại vi tác động 2
tới từ thiết bị ngoại đều đúng
dữ liệu tới một ngoại vi? tín hiệu điều mở cổng vào ra
vi
khiển tích cực
CPU có 16 đường địa chỉ
18 thì sẽ quản lý được bao 65536 16384 8192 32768 2
nhiêu vị trí bộ nhớ?
Dung lượng bộ nhớ mà
CPU quản lý sẽ là bao
19 nhiêu nếu nó có 20 2MB 1MB 4MB 8MB 2
đường địa chỉ và 8 đường
dữ liệu?
CPU sẽ tự động CPU sẽ thực
Điều gì xảy ra khi thanh Người lập trình
điều chỉnh giá trị hiện các lệnh mà
ghi bộ đếm chương trình sẽ được thông
20 của PC để quay Sẽ xảy ra ngoại lệ người lập trình 2
PC trỏ vào vùng nhớ dữ báo bằng một cơ
về vùng nhớ không kiểm soát
liệu? chế đặc biệt
chứa mã lệnh được
Nếu CPU sử dụng 8 bit
địa chỉ thì nó có thể quản
21 256 128 64 32 2
lý được bao nhiêu vị trí
vào ra?
Biến đổi tín hiệu
Biến đổi tín hiệu
tương tự từ CPU
tương tự từ ngoại
thành tín hiệu số
vi thành tín hiệu số
cung cấp cho
Giao tiếp tín hiệu cung cấp cho CPU,
Các bộ ADC và DAC ngoại vi, và
tương tự giữa các và ngược lại biến Cả ba câu kia
22 trong hệ thống vi xử lý ngược lại biến 2
ngoại vi của hệ đổi tín hiệu số từ đều đúng
thực hiện chức năng gì? đổi tín hiệu
thống với nhau CPU thành tín hiệu
tương tự từ CPU
tương tự cung cấp
thành tín hiệu số
ra bên ngoài ngoại
cung cấp ra bên
vi
ngoài ngoại vi
PWM thường được sử
dụng trong các ứng dụng Tăng tốc độ Giảm tốc độ Đảo chiều quay Câu ##A và ##B
23 2
điều khiển động cơ để động cơ động cơ của động cơ đều đúng
làm gì?
Programmed
Pulse Width Power Width Pulse Waveform
24 PWM là viết tắt của gì? Wave 2
Modulation Modulation Manipulation
Manipulation
PWM có thể được tạo ra
trên một vi điều khiển
25 hoặc hệ thống vi xử lý Điện áp đầu vào Điện áp nguồn Timer/Counter Điều khiển từ xa 2
bằng cách sử dụng khối
chức năng nào?
Thanh ghi chứa
Thanh ghi được Thanh ghi sử dụng
các dữ liệu trung
Khi có các thanh ghi sử dụng làm nơi làm nơi chứa các
gian của chương Cả ba câu kia
26 chương trình sẽ thực hiện chứa các kết quả giá trị biến cung 2
trình, giảm bớt đều đúng
nhanh hơn do: cuối cùng của cấp từ các thiết bị
các chu kỳ đọc
chương trình vào
ghi bộ nhớ
CPU sử dụng tín hiệu của
BUS nào để thông báo Cả ba câu kia
27 Địa chỉ Dữ liệu Điều khiển 2
cho vào ra biết cần cấp đều đúng
hay nhận dữ liệu?
Các cách mà một
Các cách mà lệnh hoặc một Là các vị trí của dữ
Các chế độ địa chỉ Cả ba câu kia
28 một lệnh xử lý hướng dẫn lấy liệu và mã lệnh 2
“Addressing mode” là: đều đúng
các dữ liệu địa chỉ hoặc dữ trong bộ nhớ
liệu
CISC thường hỗ
trợ nhiều chức
năng phức tạp
CISC tích hợp
trong lệnh, điều
CISC hỗ trợ các nhiều chức năng
này giúp đơn
Các CPU CISC sẽ có các kiểu dữ liệu đơn phức tạp trong một
giản hóa quá Cả ba câu kia
29 lợi điểm gì so với các giản nên dễ dàng lệnh nên quá trình 2
trình lập trình đều đúng
CPU RISC? trong việc lập thực hiện chương
cho các ứng
trình hơn trình sẽ nhanh
dụng phức tạp
chóng hơn
như hệ điều hành
và phần mềm
ứng dụng
30 Cấu trúc đường ống Là việc thực Là việc thực hiện Là việc thực hiện Cả ba câu kia 2
(Pipeline) là gì? hiện đồng thời tuần tự từng các lệnh một cấu đều đúng
nhiều lệnh tại lệnh, lệnh này trúc ống trong vi
một thời điểm, thực hiện xong xử lý
mỗi lệnh thực mới tới lệnh kế
hiện một công
tiếp
đoạn khác nhau
Là tập hợp các
lệnh sắp xếp
Là tập hợp các
theo một thuật
Là tập lệnh của lệnh được người
Chương trình trong các toán nhất định Cả ba câu kia
31 vi xử lý do nhà sử dụng sắp xếp 2
hệ thống vi xử lý là gì? để xử lý một đều đúng
sản xuất công bố một cách ngẫu
công việc hay
nhiên
một bài toán
nhất định
Các chương trình chứa
Các chương Các chương trình Các chương trình Các chương trình
trong bộ nhớ để CPU
32 trình bằng ngôn ngôn ngữ cấp mã máy (Machine hợp ngữ 2
thực hiện là các chương
ngữ bất kỳ cao language) (Assembly)
trình dưới dạng:
CPU nhận địa
CPU cấp địa chỉ, CPU cấp địa chỉ,
chỉ từ bộ nhớ, CPU cấp địa chỉ,
cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều cấp tín hiệu điều
khiển chọn bộ khiển chọn bộ
Để đọc dữ liệu từ bộ nhớ, khiển chọn bộ khiển chọn bộ nhớ,
nhớ, cấp tín hiệu nhớ, nhận tín
33 CPU cần thực hiện các nhớ, cấp tín hiệu cấp tín hiệu yêu 3
yêu cầu đọc bộ hiệu cho phép
công việc nào? yêu cầu đọc bộ cầu đọc bộ nhớ và
nhớ và nhận dữ đọc bộ nhớ và
nhớ và nhận dữ cấp dữ liệu ra data
liệu từ data bus nhận dữ liệu từ
liệu từ data bus bus vào
vào data bus vào
vào
CPU nhận địa
CPU cấp địa chỉ, CPU cấp địa chỉ,
chỉ từ bộ nhớ, CPU cấp địa chỉ,
cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều cấp tín hiệu điều
khiển chọn bộ khiển chọn bộ
Để ghi dữ liệu ra bộ nhớ, khiển chọn bộ khiển chọn bộ nhớ,
nhớ, cấp tín hiệu nhớ, nhận tín
34 CPU cần thực hiện các nhớ, cấp tín hiệu cấp tín hiệu yêu 3
yêu cầu ghi bộ hiệu cho phép
công việc nào? yêu cầu ghi bộ cầu ghi bộ nhớ và
nhớ và nhận dữ ghi bộ nhớ và
nhớ và nhận dữ cấp dữ liệu ra data
liệu từ data bus cấp dữ liệu ra
liệu từ data bus bus
vào data bus
vào
CPU nhận địa CPU cấp địa chỉ, CPU cấp địa chỉ,
CPU cấp địa chỉ,
chỉ từ vào ra, cấp cấp tín hiệu điều cấp tín hiệu điều
cấp tín hiệu điều
tín hiệu điều khiển chọn vào ra, khiển chọn vào
khiển chọn vào
Để đọc dữ liệu từ vào ra, khiển chọn vào nhận tín hiệu cho ra, cấp tín hiệu
ra, cấp tín hiệu
35 CPU cần thực hiện các ra, cấp tín hiệu phép đọc từ vào ra yêu cầu đọc vào 3
yêu cầu đọc vào
công việc nào? yêu cầu đọc vào và nhận dữ liệu từ ra và cấp dữ liệu
ra và nhận dữ
ra và nhận dữ data bus vào ra data bus
liệu từ data bus
liệu từ data bus
vào
vào
CPU cấp địa chỉ, CPU nhận địa CPU cấp địa chỉ, CPU cấp địa chỉ,
cấp tín hiệu điều chỉ từ vào ra, cấp cấp tín hiệu điều cấp tín hiệu điều
khiển chọn vào tín hiệu điều khiển chọn vào ra, khiển chọn vào
Để ghi dữ liệu ra vào ra,
ra, cấp tín hiệu khiển chọn vào cấp tín hiệu yêu ra, nhận tín hiệu
36 CPU cần thực hiện các 3
yêu cầu ghi vào ra, cấp tín hiệu cầu phép ghi vào cho phép ghi từ
công việc nào?
ra và nhận dữ yêu cầu phép ghi ra và cấp dữ liệu ra vào ra và cấp dữ
liệu từ data bus vào ra và cấp dữ data bus liệu ra data bus
vào liệu ra data bus
CPU nhận địa CPU cấp địa chỉ
CPU cấp địa chỉ từ
chỉ vào PC, cấp từ PC, cấp tín
PC, cấp tín hiệu
tín hiệu chọn bộ hiệu chọn bộ
Để đọc lệnh, CPU cần thực chọn bộ nhớ, nhận Cả ba câu kia
37 nhớ, cấp tín hiệu nhớ, cấp tín hiệu 3
hiện các công việc nào? tín hiệu đọc từ bộ đều đúng
đọc bộ nhớ và đọc bộ nhớ và
nhớ và lấy mã lệnh
lấy mã lệnh từ lấy mã lệnh từ
từ data bus
data bus data bus
Khi thực hiện các lệnh
với dữ liệu nằm trên các Mang các mức
Là các đường trở
38 thanh ghi bên trong CPU, Là các ngõ vào Là các ngõ ra logic không xác 3
kháng cao
data bus của CPU sẽ ở định
trạng thái
39 Thực hiện thiết kế các hệ Mạch phần cứng Việc lập trình Các công cụ lập Cả ba câu kia 3
thống điều khiển bằng đơn giản đơn giản hơn trình và biên dịch đều đúng
MCU sẽ đơn giản và mất phần mềm tiện
ít thời gian hơn thực hiện
thiết kế bằng hệ thống vi dụng hơn
xử lý là do:
Để xác định đã hết thời
Chờ điều kiện Chờ điều kiện so Chờ giá trị bộ đếm
gian trễ hoặc đủ số sự Cả ba câu kia
40 tràn khi đếm sánh bằng giá trị bằng 0 khi đếm 3
kiện, Timer/Counter có đều đúng
tăng định trước xuống
thể:
Trong cấu trúc một CPU
truyền thống thanh ghi
Chứa kết quả Giữ một toán Chứa các toán
chứa (Acc) thường có Chứa trạng thái
41 của các phép hạng và kết quả hạng của phép 1
chức năng gì khi ALU của các phép tính
tính của phép tính tính
thực hiện các phép tính
số học và logic?
ALU thực hiện các phép Tùy thuộc vào
42 tính nhiều nhất có bao 1 2 3 loại cấu trúc 1
nhiêu toán hạng? ALU khác nhau
Các toán hạng mà ALU
thực hiện có thể nằm ở Trong các thanh Trong vùng nhớ Trong vùng nhớ Cả ba câu kia
43 1
đâu trong hệ thống vi xử ghi dữ liệu chương trình đều đúng
lý?
Quản lý giao
tiếp giữa CPU
Chức năng chính của Thực hiện phép Điều khiển hoạt Thực hiện phép
44 với các thành 1
BIU là gì? tính số học động của CPU tính logic
phần bên ngoài
hệ thống vi xử lý
Chức năng nào sau đây là
Đếm số lệnh mà Giữ địa chỉ bộ Đếm số dữ liệu của Giữ mã lệnh
đúng cho thanh ghi bộ
45 CPU đã thực nhớ để lấy các chương trình mà cung cấp cho CU 1
đếm chương trình (PC)
hiện lệnh vào CPU CPU thực hiện giải mã thực hiện
của CPU:
46 Hàng đợi lệnh Chứa các mã Điều khiển việc Chứa các địa chỉ Cả ba câu kia 1
(Instruction Queue) có lệnh lấy vào tự chờ để lấy các lấy lệnh của các đều đúng
chức năng: bộ nhớ lệnh từ bộ nhớ lệnh tiếp theo
trong chương trình
Các thanh ghi địa chỉ bộ Chứa địa chỉ của Chứa địa chỉ để Chứa địa chỉ của
Chứa địa chỉ của
47 nhớ (MAR) có chức lệnh sẽ được truy cập tới các ô các thanh ghi 1
đỉnh ngăn xếp
năng: thực hiện nhớ và vào ra khác
Cung cấp địa chỉ
để đọc ghi ngăn
Trỏ tới vị trí của Cung cấp địa chỉ
xếp, thay đổi giá
Thanh ghi con trỏ ngăn ngăn xếp nằm để đọc ghi ngăn
trị sau các lệnh Cả ba câu kia
48 xếp (SP) có các chức ngoài thiết bị xếp, thay đổi dữ 1
truy cập ngăn đều đúng
năng: ngoại vi lưu trữ liệu lấy được từ
xếp để sử dụng
dữ liệu ngăn xếp
cho lần truy cập
tiếp theo
Giữ độ dời để trỏ
Giữ giá trị độ Giữ địa chỉ cơ sở Giữ dữ liệu truy
tới lệnh kế tiếp
dời địa chỉ trong trong các lệnh cập từ bộ nhớ
Thanh ghi chỉ số (Index trong các lệnh
49 các lệnh truy cập truy cập bộ nhớ trong các lệnh truy 1
Register) có chức năng: truy cập bộ nhớ
bộ nhớ theo chế theo chế độ chỉ cập bộ nhớ theo
theo chế độ chỉ
độ chỉ số số chế độ chỉ số
số
Các bit thông Các bit thông
Thông thường các bit Các bit điều khiển
báo trạng thái báo trạng thái Cả ba câu kia
50 trong thanh ghi cờ bao các chế độ hoạt 1
các phép tính mà các chế độ hoạt đều đúng
gồm: động của CPU
ALU thực hiện động của CPU
Điều khiển chương trình
sẽ thay đổi không tuân Lệnh chương Cả ba câu kia
51 Lệnh rẽ nhánh Phục vụ ngắt 1
theo cơ chế tuần tự trong trình con đều đúng
các cơ chế:
Giá trị hiện tại
Trong lệnh rẽ nhánh
của PC cộng
tương đối, địa chỉ của Được lấy từ đỉnh Là một giá trị được Là giá trị của
52 hoặc trừ một số 1
lệnh tiếp theo thực hiện ngăn xếp mã hóa trong lệnh thanh ghi cờ
độ dời mã hóa
là:
trong lệnh
53 Trạng thái ARM của 8 16 32 64 1
ARM7TDMI các lệnh
thực hiện với dữ liệu bao
nhiêu bit?
Advanced Advanced Advanced
Reduced Random Advanced RISC Complex
54 ARM là viết tắt của gì? 1
Instruction Set Information Machine Instruction Set
Computer System Core Computer
Điểm mạnh chính của vi Tiêu thụ năng Số lượng lệnh Tương thích đa
55 Hiệu suất cao 1
xử lý ARM là gì? lượng thấp phong phú nền tảng
ARM7TDMI có báo
56 5 6 7 8 1
nhiêu chế độ hoạt động?
Thanh ghi PC (Program Lưu trữ địa chỉ của
Lưu trữ dữ liệu Đếm số lần thực Lưu trữ địa chỉ
57 Counter) trong ARM7 lệnh tiếp theo cần 1
chương trình hiện lệnh của bộ nhớ RAM
được sử dụng để làm gì? thực hiện
Thanh ghi CPSR
Lưu trạng thái
(Current Program Status Lưu trữ dữ liệu Lưu trữ dữ liệu Lưu trữ địa chỉ
58 hiện tại của 1
Register) trong ARM7 người dùng tạm thời của bộ nhớ ROM
chương trình
được sử dụng để làm gì?
ARM7TDMI có bao
59 nhiêu tập lệnh khác 2 4 6 8 1
nhau?
Trong kiến trúc ARM7, Lưu trữ địa chỉ của
Lưu trạng thái
thanh ghi LR (Link Lưu trữ dữ liệu lệnh quay lại sau Lưu trữ địa chỉ
60 hiện tại của 1
Register) được sử dụng người dùng một lệnh nhảy của bộ nhớ RAM
chương trình
để làm gì? (branch)
Trong kiến trúc ARM7,
Lưu trạng thái Quản lý ngăn xếp
thanh ghi SP (Stack Lưu trữ dữ liệu Lưu trữ địa chỉ
61 hiện tại của (stack) của chương 1
Pointer) được sử dụng để người dùng của bộ nhớ ROM
chương trình trình
làm gì?
ARM7TDMI có bao
62 35 36 37 38 1
nhiêu thanh ghi?
Bit T trong thanh ghi Thay đổi chế độ Là bit bẫy (Trap) Là bit báo trạng
Cả ba câu kia
63 CPSR của ARM7TDMI hoạt động (User, khi thực hiện thái hoạt động của 1
đều đúng
sử dụng để: FIQ, IRQ, …) chương trình CPU
Các chế độ (Mode) hoạt User, System, Cả ba câu kia
64 FIQ, IRQ, reset Abort, Undefine 1
động của ARM là Supervisor đều đúng
Vị trí ghi các bit
Khối mạch phần
Khi giải mã một lệnh mà trạng thái của
cứng thực hiện
ALU thực hiện, tín hiệu phép toán thực Vị trí lấy lệnh tiếp Cả ##A và ##B
65 phép toán; Vị trí 2
CU cung cấp để xác định hiện; Vị trí chứa theo đều đúng
cung cấp dữ liệu
những gì? kết quả phép
cho phép toán
toán
Mã lệnh số học
logic sẽ ngắn do
Khi sử dụng thanh ghi Giảm việc đọc ghi
Chứa được nhiều không phải mã Cả ba câu kia
66 chứa (Acc) sẽ có lợi ích bộ nhớ để truy cập 2
dữ liệu hơn hóa một toán đều đúng
gì? các toán hạng
hạng và nơi chứa
kết quả của lệnh
Các cờ điều
Các cờ điều Các cờ thông báo
khiển các chế độ
ALU cung cấp các cờ khiển các chế độ trạng thái kết quả Cả ba câu kia
67 xử lý dữ liệu 2
nào tới thanh ghi cờ? giao tiếp với bên của các phép tính đều đúng
khác nhau của
ngoài của CPU mà ALU thực hiện
CPU
Giữ nguyên giá Cộng trừ đi một
Sau khi thực hiện xong Nạp một giá trị
trị hiện tại đang giá trị lưu trong
một lệnh giá trị của thanh mới lưu trong mã Cả ba câu kia
68 trỏ tới lệnh viết mã lệnh để trỏ 2
ghi PC sẽ thay đổi như lệnh để trỏ tới một đều đúng
kế tiếp trong tới một vị trí lấy
thế nào? vị trí lấy lệnh mới
chương trình lệnh mới
Hàng đợi lệnh là một cấu
69 trúc bộ nhớ hoạt động FIFO FILO LIFO FOLI 2
theo nguyên tắc:
70 Bằng nguyên tắc nào mà Do thanh ghi SP Do mỗi lần cất Do khi cất dữ liệu Cả ba câu kia 2
trong ngăn xếp dữ liệu có cơ chế chứa vào ngăn xếp dữ vào ngăn xếp trước đều đúng
hết SP sẽ giảm và
liệu sẽ được tự dữ liệu sẽ được cất
động đẩy xuống vào địa chỉ SP giữ,
địa chỉ thấp, và và khi lấy ra từ
khi lấy một dữ ngăn xếp dữ liệu sẽ
nào cất vào sau cùng sẽ được nhiều dữ
liệu ra khỏi ngăn lấy từ địa chỉ SP
được lấy ra trước tiên liệu một cách
xếp dữ liệu trong (là dữ liệu cất vào
(LIFO)? tuần tự
ngăn xếp sẽ tự sau cùng), sau đó
động được đẩy SP mới tự động
lên địa chỉ cao tăng để trỏ tới dữ
hơn liệu cất vào trước
đó
Lưu các cờ và
các trạng thái Lưu trữ các dữ liệu
Lưu địa chỉ quay
hoạt động hiện trung gian còn sử
về khi CPU thực
hành của CPU dụng trong các
Ngăn xếp có các chức Cả ba câu kia hiện các chương
71 khi CPU thực thanh ghi để có thể 2
năng gì? đều đúng trình con hoặc
hiện các chương sử dụng các thanh
các chương trình
trình con hoặc ghi cho các dữ liệu
phục vụ ngắt
các chương trình khác
phục vụ ngắt
Cho biết sự khác nhau Sau khi truy cập
Sau khi truy cập Sau khi truy cập Sau khi truy cập
khi truy cập bộ nhớ bằng bộ nhớ bằng
bộ nhớ thanh ghi bộ nhớ thanh ghi bộ nhớ bằng MAR
các lệnh di chuyển dữ MAR dữ liệu
MAR sẽ tự động MAR có giá trị dữ liệu trong bộ
liệu sử dụng thanh ghi trong bộ nhớ
72 thay đổi giá trị, không đổi còn nhớ không đổi còn 2
MAR cấp đại chỉ, và thay đổi còn
còn thanh ghi SP thanh ghi SP sẽ thanh ghi SP dữ
bằng các lệnh ngăn xếp thanh ghi SP dữ
có giá trị không tự động thay đổi liệu trong bộ nhớ
sử dụng thanh ghi SP cấp liệu trong bộ nhớ
đổi giá trị sẽ tự động thay đổi
địa chỉ? không đổi
73 Chương trình con phục Cả ba câu kia Cờ cho phép Khi che ngắt và có Cờ cho phép 2
vụ ngắt INT được thực đều đúng ngắt được xóa và tín hiệu yêu cầu ngắt được lập và
hiện khi: có tín hiệu yêu ngắt cấp tới CPU có tín hiệu yêu
cầu ngắt cấp tới cầu ngắt cấp tới
CPU CPU
Các lệnh rẽ nhánh có Các bit trạng Các bit điều
Toàn bộ các bit Các bit chứa
74 điều kiện sẽ sử dụng điều thái của thanh khiển chế độ của 2
của thanh ghi cờ trong mã lệnh
kiện chứa tại: ghi cờ thanh ghi cờ
Lệnh rẽ nhánh Lệnh gọi chương
Cơ chế chuyển điều Lệnh rẽ nhánh Lệnh gọi chương
không lưu địa chỉ trình con không
khiển chương trình bằng chuyển điều trình con chuyển
quay về và các lưu địa chỉ quay về
75 lệnh rẽ nhánh và lệnh gọi khiển chương điều khiển 2
trạng thái hoạt và các trạng thái
chương trình con có gì trình đi nhiều vị chương trình đi
động hiện tại của hoạt động hiện tại
khác nhau? trí nhiều vị trí
CPU của CPU
Chuyển điều
Chuyển điều khiển
Chuyển điều khiển bằng ngắt
Chuyển điều bằng ngắt cứng
khiển bằng cứng được tác
Cho biết sự khác nhau khiển bằng ngắt được thực hiện
chương trình con động bằng tín
giữa cơ chế chuyển điều cứng không lưu bằng lệnh còn
không lưu địa hiệu điện phần
76 khiển chương trình bằng địa chỉ quay về chuyển điều khiển 2
chỉ quay về và cứng còn chuyển
ngắt cứng và bằng và các trạng thái bằng chương trình
các trạng thái điều khiển bằng
chương trình con hoạt động hiện con tác được động
hoạt động hiện chương trình con
tại của CPU bằng tín hiệu điện
tại của CPU được thực hiện
phần cứng
bằng lệnh
Số lượng lệnh;
Các yếu tố khác nhau
Thời gian thực Cả ba câu kia
77 giữa các CPU RISC và Địa chỉ lệnh Số lượng thanh ghi 2
hiện các loại đều đúng
CISC là:
lệnh
Các lệnh của các bộ vi xử Cấu trúc giải mã
Dễ dàng phân Tối ưu hóa việc
lý RISC thường có độ dài lệnh đơn giản; Cả ba câu kia
78 đoạn trong cấu sử dụng bộ đệm 2
bằng nhau nhằm mục Giảm độ phức tạp đều đúng
trúc đường ống lệnh (Cache)
đích gì? của việc xử lý lệnh
79 Các loại bộ nhớ thường Vùng nhớ ROM Vùng nhớ Vùng nhớ ROM Cả ba câu kia 2
có trong một vi điều chứa chương SRAM sử dụng Flash sử dụng cho đều đúng
khiển (MCU) bao gồm: trình cho các hằng và các dữ liệu không
biến mất khi mất nguồn
Khi kết quả phép tính
80 CF =1 ZF = 1 NF =1 VF = 1 2
bằng không thì:
Các vi điều khiển thường Cả ba câu kia
81 UART GPIO SPI, I2C 2
có các loại vào ra gì? đều đúng
Các vi xử lý ARM được
Thực hiện được
sử dụng trong hầu hết các Hiệu suất hoạt Tiêu thụ nguồn
82 Cấu trúc nhỏ gọn các lệnh phức 2
thiết bị điện tử di động động cao thấp
tạp
do đặc tính gì?
Các chế độ tiết kiệm
Cả ba câu kia
83 năng lượng của một vi Sleep Idle Power down 2
đều đúng
điều khiển bao gồm:
Quản lý tất cả
MMU có chức năng gì Quản lý bộ nhớ Quản lý bộ nhớ Quản lý bộ nhớ
84 các loại bộ nhớ 2
trong hệ thống vi xử lý? ảo dữ liệu chương trình
trong hệ thống
Bit I trong thanh ghi Thực hiện các Thực hiện các thao
Cả ba câu kia
85 CPSR của ARM7TDMI lệnh với số Cho phép ngắt tác dữ liệu bên 2
đều đúng
sử dụng để: nguyên (Integer) trong CPU
Các ngoại lệ SWI và
Reset sẽ làm ARM
86 User Supervisor System Abort 2
chuyển qua hoạt động ở
chế độ:
Khi chuyển qua
Có tín hiệu phần
Thực hiện các chế độ hoạt động
IRQ và FIQ là các ngắt cứng cấp tới các Cả ba câu kia
87 lệnh phần mềm bằng cách thay đổi 2
xảy ra khi: chân yêu cầu đều đúng
tương ứng các bit M trong
ngắt tương ứng
CPSR
88 Các bit cờ điều kiện Làm điều kiện rẽ Thông báo trạng Thông báo trạng Cả ba câu kia 2
trong thanh ghi trạng thái nhánh chương thái các lệnh số thái các lệnh di đều đúng
chương trình CPSR trình, hoặc làm học và logic chuyển dữ liệu
(Current Program Status điều kiện để thực
Register) sử dụng để: hiện lệnh
Bit N trong thanh ghi
Kết quả nhỏ hơn Thực hiện lệnh Khi không thực Cả ba câu kia
89 CPSR của ARM7TDMI 2
không NOT hiện lệnh tính toán đều đúng
sẽ được lập khi:
Bit C trong thanh ghi Kết quả lệnh Khi kết quả lệnh
Khi kết quả lệnh Cả ba câu kia
90 CPSR của ARM7TDMI cộng tràn khỏi nhân cần mở rộng 2
trừ có mượn đều đúng
sẽ được lập khi: thanh ghi khỏi thanh ghi
Kết quả các phép
Bit V trong thanh ghi Kết quả lệnh Khi kết quả lệnh
tính có dấu đổi Cả ba câu kia
91 CPSR của ARM7TDMI cộng tràn khỏi nhân cần mở rộng 2
dấu không mong đều đúng
sẽ được lập khi: thanh ghi khỏi thanh ghi
muốn
Chạy chương
Trong chế độ giám sát Truy cập dữ liệu Truy cập dữ liệu Cả ba câu kia
92 trình thiết lập hệ 2
(SVC) của ARM7 có thể: của hệ thống của người sử dụng đều đúng
thống
Chế độ nào của ARM
93 không truy cập được bộ User Supervisor System Abort 2
nhớ và vào ra
Chế độ User của ARM
Chế độ
94 cần bắt đầu hoạt động Chế độ System Chế độ IRQ Chế độ FIQ 2
Supervisor
sau:
Khi cần hiệu chỉnh các
tham số của hệ thống có
95 User IRQ System Abort 2
thể sử dụng chế độ nào
của ARM?
Chép nhanh các Không lưu các
Chế độ FIQ của ARM
thanh ghi trạng thái và Không thực hiện Cả ba câu kia
96 thực hiện nhanh các ISR 2
chương trình thanh ghi chương các ISR đều đúng
do:
chính trình chính
Thực hiện các Thực hiện một Xảy ra các lỗi
Chế độ Undefined sẽ xảy Xảy ra ngắt
97 chu kỳ không lệnh không có truy cập bộ nhớ 2
ra khi: không định nghĩa
được định nghĩa trong tập lệnh vào ra
Truy cập các ứng
Truy cập dữ liệu
Chế độ Abort sẽ xảy ra Truy cập vị trí dụng của hệ thống Cả ba câu kia
98 hệ thống không 2
khi: bộ nhớ bị lỗi không được cho đều đúng
được cho phép
phép
Tại các vị trí cố
Khi xảy ra các ngoại lệ Tại các vị trí Tại các vị trí
định xác định Không có vị trí
99 (Exception) ARM sẽ thực cung cấp bởi bộ không được xác 2
trước trong bộ xác định
hiện các lệnh: điều khiển ngắt định trước
nhớ
Khi xảy ra ngoại lệ địa Ở các vị trí cố
Ở thanh ghi đa Các thanh ghi LR
100 chỉ quay về sẽ được lưu Ở đỉnh ngăn xếp định trong bộ 2
năng tương ứng
trữ: nhớ
Công việc CPU ARM Đổi chế độ hoạt
Lưu địa chỉ quay Lưu thanh ghi Cả ba câu kia
101 thực hiện khi xảy ra động, lập cờ cấm 2
về CPSR vào SPSR đều đúng
ngoại lệ: ngắt
Công việc CPU ARM Dùng giá trị của Phục hồi giá trị
Xóa các cờ cấm Cả ba câu kia
102 thực hiện khi kết thúc LR để phục hồi của CPSR từ 2
ngắt đều đúng
một ngoại lệ: giá trị của PC SPSR
Chương trình Làm điều kiện để
Khi đang thực hiện một Chuyển qua một
ISR không dừng kết thúc ISR khi Cả ba câu kia
103 ISR ngoại lệ, cơ cấm ngắt ISR khác khi có 2
để chuyển qua nó thực hiện đều đúng
của ARM được lập để: yêu cầu
một ISR khác xong
Khi quay về từ một ISR
Tính toán từ giá
của một ngoại lệ, giá trị Lấy giá trị của Lấy giá trị từ đỉnh Lấy giá trị từ
104 trị hiện tại của 2
thanh ghi PC của ARM thanh ghi LR ngăn xếp thanh ghi SPSR
PC và LR
được phục hồi bằng cách:
105 Nếu ALU có các khối 8 3 4 7 3
mạch thực hiện các phép
tính số học và logic bao
gồm: Cộng, trừ, nhân,
chia, AND, OR, XOR,
NOT thì nó cần nhận
được ít nhất bao nhiêu tín
hiệu điều khiển từ CU?
Mạch định thời
Các khối chức năng số có Đệm hai chiều Đệm một chiều Cả ba câu kia
106 cho các tín hiệu 3
thể có trong một BIU là: cho bus dữ liệu cho bus địa chỉ đều đúng
điều khiển
Các khối chức năng số có Mạch giải mã, Mạch nhân,
Bộ đếm, mạch Mạch cộng,
107 thể có trong một 3
so sánh Mạch mã hóa Mạch chia Mạch trừ
Timer/Counter là:
Do CU không
Tại sao khi sử dụng thanh Do không phải
phải tính toán để Do dữ liệu sẽ được
ghi địa chỉ bộ nhớ, độ dài mã hóa địa chỉ Cả ba câu kia
108 tạo ra địa chỉ của truyền vào thanh 3
mã lệnh truy cập bộ nhớ của bộ nhớ trong đều đúng
ô nhớ cần truy ghi địa chỉ
sẽ ngắn hơn? mã lệnh
cập
CPU có thể thực
Khi có hàng đợi lệnh CPU có thể đồng
hiện hai tác vụ CPU sẽ sắp hàng
(Instruction Queue) tốc thời thực hiện
lấy lệnh và thực các lệnh của Cả ba câu kia
109 độ thực hiện chương nhiều lệnh tại 3
hiện lệnh tại chương trình theo đều đúng
trình của CPU sẽ tăng lên cùng một thời
cùng một thời trình tự lập trình
do: điểm
điểm
Khi truy cập một chuỗi Không cần thay Có thể truy cập Không cần cung
Không cần truy
dữ liệu trong bộ nhớ việc đổi địa chỉ để nhiều dữ liệu cấp địa chỉ bộ
110 cập dữ liệu một 3
sử dụng các lệnh ngăn truy cập tới các trong chuỗi một nhớ để truy cập
cách tuần tự
xếp sẽ có các lợi điểm gì? dữ liệu kế tiếp cách đồng thời dữ liệu
Có thể truy cập tới
Khi truy cập một chuỗi các phần tử khác
Không cần thay Có thể truy cập Không cần cung
dữ liệu trong bộ nhớ việc nhau của chuỗi
đổi địa chỉ để nhiều dữ liệu cấp địa chỉ bộ
111 sử dụng các lệnh với chế theo chỉ số trong 3
truy cập tới các trong chuỗi một nhớ để truy cập
độ chỉ số có các lợi điểm lệnh, mà không
dữ liệu kế tiếp cách đồng thời dữ liệu
gì? cần theo địa chỉ cụ
thể của nó
112 Tại sao cần giải mã lệnh? Để với mã lệnh Để bảo mật các Để thực hiện các Cả ba câu kia 3
ngắn có thể cung mã lệnh trong lệnh nhanh hơn đều đúng
cấp nhiều tín chương trình
hiệu cho phép
các khối mạch
trong CPU thực
hiện lệnh
Mã điều kiện PL xảy ra
113 NF =0 ZF = 1 NF =1 VF = 1 3
khi:
Mã điều kiện HI xảy ra
114 CF=1 và ZF=1 CF=1 và ZF=0 CF=0 và ZF=0 CF=0 và ZF=1 3
khi:
Mã điều kiện LS xảy ra CF=1 hoặc
115 CF=1 hoặc ZF=0 CF=0 hoặc ZF=0 CF=0 hoặc ZF=1 3
khi: ZF=1
Mã điều kiện GE xảy ra
116 NF=VF NF≠VF ZF=VF ZF≠VF 3
khi:
Mã điều kiện LT xảy ra
117 NF=VF NF≠VF ZF=VF ZF≠VF 3
khi:
Mã điều kiện LE xảy ra ZF=1 hoặc ZF=1 và CF=1 và CF=1 và
118 3
khi: NF≠VF NF≠VF NF≠VF NF≠VF
Mã điều kiện LE xảy ra ZF=0 hoặc ZF=1 hoặc ZF=0 hoặc
119 ZF=1 hoặc NF=VF 3
khi: NF=VF NF≠VF NF≠VF
Mã điều kiện GT xảy ra ZF=1 và ZF=0 và
120 ZF=1 và NF=VF ZF=0 và NF=VF 3
khi: NF≠VF NF≠VF
Cấp tín hiệu
Cấp tín hiệu Cấp tín hiệu Cấp tín hiệu chọn
chọn chip nhớ;
chọn chip nhớ; chọn chip nhớ; chip nhớ; Cấp địa
Cấp địa chỉ để
Cấp địa chỉ để Chờ bộ nhớ cấp chỉ để xác định ô
Để điều khiển đọc một xác định ô nhớ
xác định ô nhớ địa chỉ ô nhớ cần nhớ cần đọc; Chờ
121 chip nhớ trong hệ thống cần đọc; Chờ tín 1
cần đọc; Cấp tín đọc; Cấp tín hiệu tín hiệu cho phép
vi xử lý cần: hiệu cho phép
hiệu cho phép cho phép đọc; đọc từ bộ nhớ;
đọc từ bộ nhớ;
đọc; Nhận dữ Nhận dữ liệu ở Nhận dữ liệu ở
Cấp dữ liệu ra
liệu ở data BUS data BUS data BUS
data BUS
122 Để điều khiển ghi một Cấp tín hiệu Cấp tín hiệu Cấp tín hiệu chọn Cấp tín hiệu 1
chip nhớ trong hệ thống chọn chip nhớ; chọn chip nhớ; chip nhớ; Chờ bộ chọn chip nhớ;
Cấp địa chỉ để
Cấp địa chỉ để Cấp địa chỉ để
xác định ô nhớ nhớ cấp địa chỉ ô
xác định ô nhớ xác định ô nhớ
cần ghi; Cấp dữ nhớ cần ghi; Cấp
cần ghi; Cấp dữ cần ghi; Cấp tín
vi xử lý cần: liệu vào data dữ liệu vào data
liệu vào data hiệu điều khiển
bus; Chờ bộ nhớ bus; Cấp tín hiệu
bus; Cấp tín hiệu ghi; Nhận dữ
cấp tín hiệu xác điều khiển ghi
điều khiển ghi liệu từ data bus
nhận đã ghi
Tại sao các hệ thống vi
xử lý yêu cầu dung lượng
Tốc độ truy cập Không cần chu kỳ Tiêu thụ ít năng
123 bộ nhớ lớn thường sử Có giá thành rẻ 1
nhanh làm tươi lượng
dụng DRAM làm bộ nhớ
chính?
Bộ nhớ đệm giữa
SRAM có tốc độ DRAM có tốc độ Flash có tốc độ
124 Cache là loại bộ nhớ: thiết bị ngoại vi và 1
truy cập nhanh truy cập nhanh truy cập nhanh
hệ thống vi xử lý
Các đặc tính khác nhau
Cấu tạo của tế Độ ổn định của dữ Cả ba câu kia
125 giữa DRAM và SRAM Tốc độ truy cập 1
bào nhớ liệu đều đúng
bao gồm:
Người sử dụng Người sử dụng Người sử dụng
Người sử dụng có
có thể ghi xóa có thể ghi xóa dữ có thể ghi xóa dữ
Flash ROM là loại bộ thể ghi xóa dữ liệu
126 dữ liệu nhiều lần liệu nhiều lần liệu nhiều lần 1
nhớ: nhiều lần bằng
bằng điện cả bằng điện từng bằng điện từng
điện từng ô nhớ
chip nhớ bit nhớ khối dữ liệu
Người sử dụng
Người sử dụng có
Dữ liệu được ghi Người sử dụng có thể ghi dữ
thể ghi xóa dữ liệu
127 EEPROM là loại bộ nhớ: vào trong khi có thể ghi dữ liệu liệu vào bằng 1
nhiều lần bằng
sản xuất ra nó vào một lần điện và xóa bằng
điện từng ô nhớ
tia cực tím
Loại bộ nhớ nào sau đây
Cả ba câu kia
128 thường được sử dụng làm HDD Flash disk SD card 1
đều đúng
bộ nhớ ngoài?
129 Trong phương thức điều CPU dừng tiến CPU dừng hoạt Vào ra dừng CPU CPU tự động 1
trình hiện tại để
để tự thực hiện quá dừng hoạt động
khiển vào ra theo ngắt chạy tiến trình động sau khi
trình truyền dữ liệu vào ra khi cần
(Interrupt): phục vụ vào ra phục vụ vào ra
với bộ nhớ thiết
khi có yêu cầu
CPU tuần tự
CPU tuần tự CPU tuần tự
Trong phương thức điều kiểm tra và thực CPU tuần tự chờ
thực hiện các truyền dữ liệu giữa
130 khiển vào ra theo quét hiện các tiến các vào ra hoạt 1
lệnh để phục vụ các vào ra và bộ
vòng (Polling) là: trình phục vụ các động
vào ra nhớ
vào ra
Trong phương thức điều CPU dừng truy cập Bộ điều khiển
CPU truyền dữ Vào ra trực tiếp
khiển vào ra theo truy BUS để bộ nhớ và DMA trực tiếp
liệu với vào ra điều khiển việc
131 cập bộ nhớ trực tiếp vào ra truyền dữ điều khiển hoạt 1
một cách trực truyền dữ liệu
(DMA – Direct Memory liệu trực tiếp với động truyền dữ
tiếp với CPU
Access): nhau liệu với CPU
Trong các chế độ truyền
Tín hiệu điều
dữ liệu nối tiếp đồng bộ, Thay đổi trạng Tín hiệu điều
khiển động bộ
132 hai bên truyền nhận có thái đường Xung clock khiển động bộ 1
cung cấp từ bộ
thể đồng bộ với nhau truyền cung cấp từ CPU
nhớ
bằng:
Có cấu trúc
Khi sử dụng cấu trúc Tập lệnh đơn CPU có thể lấy đường ống cho
Harvard tốc độ thực hiện giản giảm thời lệnh và lấy dữ Cấu trúc phần phép thực hiện
133 2
các chương trình tăng lên gian giải mã liệu tại cùng một cứng đơn giản nhiều lệnh tại
do: lệnh thời điểm cùng một thời
điểm

Ngõ ra cấp tín Là tín hiệu hai Là tín hiệu hai


hiệu cho phép đọc Ngõ vào nhận tín chiều do SRAM
chiều do CPU
134 dữ liệu chuyển tới hiệu đọc dữ liệu từ tác động khi đọc 2
tác động khi đọc
Trong định thời bộ nhớ CPU CPU dữ liệu
dữ liệu
SRAM ở trên, tín hiệu
OE là:
Bus địa chỉ và Bus địa chỉ tích Bus dữ liệu tích
Bus địa chỉ và
bus dữ liệu của cực và bus dữ cực và bus địa chỉ
bus dữ liệu của
135 ROM sẽ ở trạng liệu của ROM sẽ của ROM sẽ ở 2
ROM sẽ ở trạng
thái trở kháng ở trạng thái trở trạng thái trở
thái tích cực
cao kháng cao kháng cao
Trong định thời bộ nhớ
ROM ở trên, khi CE ở
mức cao:
Cấp DT/R=1; Cấp DT/R=0; Cấp DT/R=0;
cấp địa chỉ và cấp địa chỉ và Cấp DT/R=0; cấp cấp địa chỉ và
chốt bằng tín chốt bằng tín địa chỉ và chốt chốt bằng tín
hiệu ALE=1; cấp hiệu ALE=1; cấp bằng tín hiệu hiệu ALE=1; cấp
IO/M để xác IO/M để xác ALE=0; cấp IO/M IO/M để xác
định đọc bộ nhớ định đọc bộ nhớ để xác định đọc bộ định đọc bộ nhớ
hay vào ra; cấp hay vào ra; cấp nhớ hay vào ra; hay vào ra; cấp
136 2
RD=0 tác động RD=0 tác động cấp RD=0 tác động RD=1 tác động
đọc bộ nhớ; cấp đọc bộ nhớ; cấp đọc bộ nhớ; cấp đọc bộ nhớ; cấp
DEN=0 cho DEN=0 cho phép DEN=0 cho phép DEN=0 cho
Trong định thời (Timing
phép bộ đệm bus bộ đệm bus dữ bộ đệm bus dữ liệu phép bộ đệm bus
diagram) ở trên, để thực
dữ liệu và lấy dữ liệu và lấy dữ và lấy dữ liệu từ dữ liệu và lấy dữ
hiện chu kỳ đọc dữ liệu
liệu từ Data Bus liệu từ Data Bus Data Bus vào CPU liệu từ Data Bus
cần:
vào CPU vào CPU vào CPU
137 Cấp DT/R=1; Cấp DT/R=0; Cấp DT/R=0; cấp Cấp DT/R=0; 2
cấp địa chỉ và cấp địa chỉ và địa chỉ và chốt cấp địa chỉ và
chốt bằng tín chốt bằng tín bằng tín hiệu chốt bằng tín
hiệu ALE=1; cấp hiệu ALE=1; cấp ALE=0; cấp IO/M hiệu ALE=1; cấp
IO/M để xác IO/M để xác để xác định đọc bộ IO/M để xác
định đọc bộ nhớ định đọc bộ nhớ nhớ hay vào ra; định đọc bộ nhớ
hay vào ra; cấp hay vào ra; cấp cấp RD=0 tác động hay vào ra; cấp
RD=0 tác động RD=0 tác động đọc bộ nhớ; cấp RD=1 tác động
đọc bộ nhớ; cấp đọc bộ nhớ; cấp DEN=0 cho phép đọc bộ nhớ; cấp
DEN=0 cho DEN=0 cho phép DEN=0 cho
Trong định thời (Timing
phép bộ đệm bus bộ đệm bus dữ bộ đệm bus dữ liệu phép bộ đệm bus
diagram) ở trên, để thực
dữ liệu và lấy dữ liệu và lấy dữ và lấy dữ liệu từ dữ liệu và lấy dữ
hiện chu kỳ ghi dữ liệu
liệu từ Data Bus liệu từ Data Bus Data Bus vào CPU liệu từ Data Bus
cần:
vào CPU vào CPU vào CPU

Chốt BUS điều Chốt BUS địa Chốt BUS dữ liệu Điều khiển cấp
138 khiển kết nối tới chỉ kết nối tới bộ kết nối tới bộ nhớ nguồn cho hệ 2
Trong sơ đồ kết nối hệ bộ nhớ và vào ra nhớ và vào ra và vào ra thống vi xử lý
thống vi xử lý 8086 trên
tín hiệu ALE và các bộ
chốt (Latch) được sử
dụng để:

Khi CPU đọc bộ Khi CPU truy Khi CPU ghi bộ Khi CPU truy
139 2
nhớ cập bộ nhớ nhớ cập vào ra
Trong sơ đồ kết nối hệ
thống vi xử lý hình vẽ
trên, tín hiệu IO/M sẽ có
mức logic 0:
140 CS1=0; CS1=0; CS1=0; Cả ba câu kia 2
CS2=1;WE=0; CS2=1;WE=1; CS2=1;WE=1; đều đúng
OE=0 OE=1 OE=0

Theo bảng trạng thái của


bộ nhớ SRAM ở trên, dữ
liệu sẽ được lưu vào
SRAM khi:

MEMR mức 0
141 Logic 0 Logic 1 High Z 2
MEMW mức 1

Trong định thời đọc cổng


vào ra hình trên, trong
chu kỳ đọc vào ra các tín
hiệu MEMR và MEMW
sẽ ở trạng thái:
142 Logic 0 Logic 1 High Z MEMR mức 0 2
MEMW mức 1

Trong định thời đọc cổng


vào ra hình trên, trong
chu kỳ ghi vào ra các tín
hiệu MEMR và MEMW
sẽ ở trạng thái:

143 Đọc bộ nhớ Ghi bộ nhớ Đọc vào ra Ghi vào ra 2

Giản đồ thời gian hình vẽ


trên là giản đồ của chu
kỳ:

MEMR mức 0
144 Logic 0 Logic 1 High Z 2
MEMW mức 1

Trong định thời hình


trên, trong chu kỳ ghi vào
ra các tín hiệu IOR và
IOW sẽ ở trạng thái:
MEMR mức 0
145 Logic 0 Logic 1 High Z 2
MEMW mức 1

Trong định thời hình


trên, trong chu kỳ ghi vào
ra các tín hiệu IOR và
IOW sẽ ở trạng thái:

146 Ngõ vào E Ngõ vào P Ngõ vào G Ngõ vào Vpp 2
Trong định thời ở trên,
dữ liệu được ghi vào bộ
nhớ EPROM khi cấp
xung lập trình vào:

Ngõ vào cung Ngõ vào cung Ngõ vào cung


Ngõ vào cung cấp
cấp tín hiệu đọc cấp tín hiệu ghi cấp tín hiệu cấm
147 tín hiệu cho phép 2
dữ liệu từ dữ liệu vào EPROM hoạt
EPROM hoạt động
Trong định thời ở trên, tín EPROM EPROM động
hiệu G là:
Cung cấp tín
148 Giải mã địa chỉ Chốt địa chỉ Truyền dữ liệu hiệu điều khiển 2
vào ra
Trong sơ đồ kết nối IO
hình vẽ trên, vi mạch
16L8 thực hiện chức
năng:

Cách ly quang Cho phép điều Tăng công suất


Cả ba câu kia
149 giữa ngõ ra và khiển tải xoay điều khiển cho ngõ 2
đều đúng
Thiết bị điện tử hình trên tải chiều ra
có chức năng:
Cho phép điều
khiển tải có dòng
Thay đổi mức
Cấp dòng điện điện lớn bằng tín Cả ba câu kia
150 logic điều khiển 2
đủ lớn cho tải hiệu điều khiển có đều đúng
tải
Trong sơ đồ trên, dòng điện nhỏ
MOSFET có chức năng: cung cấp từ ngõ ra

Cho phép điều Cho phép điều Cách ly giữa mạch


Cả ba câu kia
151 khiển tải xoay khiển tải một công suất và mạch 2
đều đúng
chiều chiều điều khiển
Mạch giao tiếp relay hình
vẽ trên có chức năng:
Xả dòng trên
cuộn dây relay Dẫn dòng điện
khi transistor khi ngõ ra điều Tăng dòng điện Cả ba câu kia
152 2
ngưng dẫn tránh khiển cung cấp cung cấp cho tải đều đúng
hư hỏng mức logic 1
Trong sơ đồ hình vẽ trên transistor
diode D1 có chức năng:

153 A0H A1H A4H A2H 3

Trong sơ đồ trên, PORT1


sẽ có địa chỉ:

154 A0H A1H A4H A2H 3

Trong sơ đồ trên, PORT1


sẽ có địa chỉ:
155 00B 01B 10B 11B 3
Trong sơ đồ trên để truy
cập tới các cổng vào ra
cho phép từ bộ giải mã
địa chỉ A7A6 phải có giá
trị là:

FF800H- FF000H – FF700H – FF900H-


156 3
FFFFFH FF7FFH FFFFFH FFFFFH

Trong sơ đồ hình vẽ trên


bộ nhớ 2716 có vùng địa
chỉ:

157 8 bit 16 bit 32 bit 64 bit 3

Trong sơ đồ trên BUS dữ


liệu của CPU là:
00000H- C0000H- 40000H-
158 80000H-BFFFFH 3
3FFFFH FFFFFH 7FFFFH

Trong sơ đồ kết nối bộ


nhớ hình vẽ trên bộ nhớ
#2 có vùng địa chỉ:

00000H- C0000H- 40000H-


159 80000H-BFFFFH 3
3FFFFH FFFFFH 7FFFFH

Trong sơ đồ kết nối bộ


nhớ hình vẽ trên bộ nhớ
#3 có vùng địa chỉ:
160 56 128 256 512 3

Trong sơ đồ kết nối bộ


nhớ hình vẽ trên sẽ có
bao nhiêu bộ nhớ 8KB?
GPIO (General Purpose
Input/Output) là khối Giao tiếp vào ra
161 Biến đổi ADC Xử lý ngắt Đa chức năng 1
chức năng gì trong vi số
điều khiển?
Trong thư viện HAL
Khởi động cấu
(Hardware Abstraction
Khởi động các Cấu hình xung hình các cấu trúc Cả ba câu kia
162 Layer) cho STM32 1
phần cứng nhịp dữ liệu bên trong đều đúng
HAL_Init() được sử
thư viện
dụng để:
Trong thư viện HAL
Cấu trúc dữ liệu Trường thông tin
(Hardware Abstraction Hàm để khởi Cả ba câu kia
163 để khởi động để khởi động 1
Layer) cho STM32 động GPIO đều đúng
GPIO GPIO
GPIO_InitTypeDef là:
164 Trong thư viện HAL cho Cấu trúc dữ liệu Hàm để khởi Trường thông tin Cả ba câu kia 1
STM32 để khởi động động GPIO để khởi động đều đúng
GPIO_InitStruct.Pin, GPIO GPIO
GPIO_InitStruct.Mode,
GPIO_InitStruct.Pull,
GPIO_InitStruct.Speed
là:
Trong thư viện HAL cho
Nhận giá trị từ Cấu hình GPIO Thay đổi giá trị Tạo chế độ vào
165 STM32 giá trị 1
chân GPIO làm chân vào ngõ vào của GPIO cho tất cả GPIO
GPIO_Mode_IN để:
Trong thư viện HAL cho
Cấp giá trị cho Cấu hình GPIO Thay đổi giá trị Tạo chế độ ra
166 STM32 giá trị 1
chân GPIO làm chân ra ngõ ra của GPIO cho tất cả GPIO
GPIO_Mode_OUT để:
Cấu hình cho phép
Cấu hình GPIO chân GPIO sử Cấu hình cho
Trong thư viện HAL cho Thay đổi giá trị
thay đổi chức dụng cho các chức chân GPIO là
167 STM32 giá trị cung cấp cho 1
năng giữa vào và năng khác như đường vào ra
GPIO_Mode_AF để: chân GPIO
ra USART, SPI, I2C, tương tự

Cấu hình cho phép
Trong thư viện HAL cho
Cung cấp tín Nhận tín hiệu chân GPIO làm
STM32 giá trị Cả ba câu kia
168 hiệu tương tự ra tương tự từ chân chân nhận hoặc 1
GPIO_Mode_ANALOG đều đúng
chân GPIO GPIO cấp tín hiệu tương
để:
tự
Cấu hình cho
Cấu hình cho Cấu hình cho Cấu hình cho phép
Trong thư viện HAL cho phép chân GPIO
phép chân GPIO phép chân GPIO chân GPIO làm
169 STM32 giá trị làm chân nhận 1
làm chân vào trở làm chân truyền chân nhận thông
GPIO_Mode_IT để: tín hiệu yêu cầu
kháng cao thông tin tin
ngắt
Xác định cách Xác định cách
Trong thư viện HAL cho Xác định cách
kết nối chân Xác định cách kết kết nối chân
STM32 biến kết nối chân
170 GPIO với điện nối chân GPIO với GPIO không có 1
GPIO_InitStruct.Pull GPIO với điện
trở kéo lên hoặc điện trở kéo xuống điện trở kéo lên
để: trở kéo lên
kéo xuống hoặc kéo xuống
171 Trong thư viện HAL cho Xác định chân Xác định chân Xác định chân Xác định chân 1
STM32 biến GPIO sẽ được GPIO là ngõ ra GPIO là ngõ vào GPIO là trở
GPIO_InitStruct.Pin cấu hình kháng cao
để:
Biến xác định Biến xác định Biến xác định các
Trong thư viện HAL cho chân cần khởi cổng cần khởi chân cần khởi
STM32 hàm động; Biến xác động; Biến xác động; Biến xác Cả ba câu kia
172 1
HAL_GPIO_Init() cần định cấu hình định cấu hình định cấu hình các đều sai
truyền biến gì: chân cần khởi các chân cần chân cần khởi
động khởi động động
Cấu hình điện
Các bit CNF trong thanh Cấu hình tốc độ Cấu hình chế độ
Lập xóa bit các trở kéo lên kéo
173 ghi CRL của STM32 sử của các chân vào ra của các 1
chân GPIO xuống của các
dụng để: GPIO chân GPIO
chân GPIO
Cấu hình điện
Các bit MODE trong Cấu hình tốc độ Cấu hình chế độ
Lập xóa bit các trở kéo lên kéo
174 thanh ghi CRL của của các chân vào ra của các 1
chân GPIO xuống của các
STM32 sử dụng để: GPIO chân GPIO
chân GPIO
Là thanh ghi sử Là thanh ghi sử
Là thanh ghi sử Là thanh ghi sử
Thanh ghi GPIOB->ORD dụng 16 bit thấp dụng 16 bit cao
175 dụng 32 cung cấp dụng 32 nhận dữ 1
của STM32: cung cấp dữ liệu cung cấp dữ liệu
dữ liệu ra PORTB liệu PORTB
ra PORTB ra PORTB
Dùng 16 bit thấp Dùng 16 bit cao
để reset các bit để reset các bit Là thanh ghi để Là thanh ghi để
Thanh ghi GPIOA-
176 Port A về 0; 16 Port A về 0; 16 reset các bit Port A set các bit Port A 1
>BSRR của STM32:
bit cao set các bit thấp set các về 0 lên 1
bit Port A lên 1 bit Port A lên 1
Sử dụng 32 bit Sử dụng 32 bit Sử dụng 16 bit
Sử dụng 16 bit cao
cao để chứa dữ thấp để chứa dữ thấp để chứa dữ
Thanh ghi GPIOB->IDR để chứa dữ liệu
177 liệu nhận được liệu nhận được liệu nhận được 1
của STM32: nhận được từ các
từ các chân vào từ các chân vào từ các chân vào
chân vào PORTB
PORTB PORTB PORTB
178 HAL_GPIO_WritePin, Có các giá trị Có các giá trị Có các giá trị Cả ba câu kia 1
(GPIOx,GPIO_Pin,PinState) GPIO_PIN_0 và GPIO_PIN_HI GPIO_PIN_RESET đều đúng
Tham số GPIO_PIN GPIO_PIN_1 và và GPIO_PIN_SET
PinState trong hàm HAL
GPIO_PIN_LO
STM32 trên:
Trong hàm
HAL_GPIO_ReadPin() Cổng và cấu
Cổng và cấu Cổng và chân GPIO Cả ba câu kia
179 thư viện HAL cho hình của chân 1
hình của cổng của cổng đều đúng
STM32 sẽ có các tham số GPIO
chỉ thị:
Chọn thanh ghi
Chọn thanh ghi Chọn thanh ghi Chọn thanh ghi
trạng thái hoặc
Tín hiệu RS của text dữ liệu hoặc điều dữ liệu hoặc điều trạng thái hoặc
180 điều khiển khi 1
LCD sử dụng để: khiển khi ghi dữ khiển khi đọc dữ điều khiển khi ghi
đọc dữ liệu từ
liệu vào LCD liệu từ LCD dữ liệu vào LCD
LCD
Trước khi gửi dữ liệu
hiển thị lên LCD có thể
181 0x38; 0x0E 0x06;0xC0 0x10; 0x14 0x18; 0x1C 1
khởi động bằng các lệnh
nào?
ADC_CR1,2 ADC_DR (Data ADC_ISR (Status
(Control Register); Register) và
Các thanh ghi cho ADC Register 1,2) ; Cả ba câu kia
182 ADC_CCR ADC_IER 1
của STM32 là: ADC_SMPR đều đúng
(Common (Interrupt Enable
(Sample Time
Control Register) Register)
Register)
183 Các thanh ghi sử dụng I2C_CR1; I2C_CR1; I2C_CR1; I2C_CR1; 1
cho I2C của STM32 bao I2C_CR2; I2C_CR2; I2C_CR2; I2C_OAR1;
gồm: I2C_OAR1; I2C_OAR; I2C_OAR1; I2C_OAR2;
I2C_OAR2; I2C_DR1; I2C_OAR2; I2C_OAR3;
I2C_DR; I2C_DR2; I2C_DR; I2C_DR;
I2C_SR1; I2C_SR1; I2C_SR1; I2C_SR1;
I2C_SR2; I2C_SR2; I2C_CCR1; I2C_SR2;
I2C_CCR; I2C_CCR; I2C_CCR2; I2C_CCR;
I2C_TRISE; I2C_TRISE; I2C_TRISE; I2C_TRISE;
I2C_FLTR I2C_FLTR I2C_FLTR I2C_FLTR
USART_CR1; USART_CR1; USART_CR1; USART_CR1;
USART_CR2; USART_CR2; USART_CR2; USART_CR2;
Các thanh ghi sử dụng USART_BRR; USART_BRR1; USART_CR3; USART_BRR;
184 cho USART của STM32 1
bao gồm: USART_DR; USART_BRR2; USART_BRR; USART_DR1;
USART_SR1; USART_DR; USART_DR; USART_DR2;
USART_SR2 USART_SR USART_SR USART_SR
Khởi động là Khởi động Pull Khởi động các
Các tham số khởi động
ngõ vào hoặc Up, Pull Down, chức năng: Ngắt, Cả ba câu kia
185 (Initialization) cho một 2
ngõ ra, giá trị Open, Floating, vào ra ADC, tạo đều đúng
GPIO
ban đầu … xung, …
Các chức năng thường Thông báo hệ Thông báo trạng Thông báo chế độ
Cả ba câu kia
186 thấy của LED trong các thống đã được hoạt động: mở, hoạt động: chạy, 2
đều đúng
hệ thống nhúng: cấp nguồn đóng, … dừng, lỗi, …
Các chức năng thường Thực hiện tác vụ
Nhập tham số, Thiết lập cấu hình: Cả ba câu kia
187 thấy của nút nhấn trong điều khiển, xác 2
dữ liệu hoạt động chế độ, tần số, … đều đúng
các hệ thống nhúng: nhận hành động
Hiển thị các con
số cho: đồng hồ,
Hiển thự ký tự
Các chức năng thường dữ liệu đo lường, Hiển thị các băn
thông báo: trạng
thấy của LED 7 đoạn kết quả phép bản cho: Tên sản Cả ba câu kia
188 thái hệ thống, 2
trong các hệ thống tính, giá trị tham phẩm, thông báo, đều đúng
chế độ hoạt
nhúng: số hệ thống, số …
động, …
lượng sản phẩm

So sánh ưu nhược điểm Hiển thị văn bản
của LCD so với LED 7 đồ họa ít phong Tiêu thụ công Đáp ứng nhanh Góc nhìn rộng
189 2
đoạn trong các hệ thống phú, ít màu sắc cao hơn hơn hơn
nhúng: hơn
190 GPIOB->CRL=(3<<0)| Cấu hình các Cấu hình các Cấu hình các chân Cấu hình các 2
(3<<4)|(3<<8)|(3<<12) chân PB0; PB1; chân PB0; PB4; PB0; PB1; PB2; chân PB0; PB4;
PB8; PB12 của
PB2; PB3 của PB8; PB12 của PB3 của STM32 ở
Dòng lệnh lập trình thanh STM32 ở chế độ
STM32 ở chế độ STM32 ở chế độ chế độ output open
ghi CRL của STM32 ở output open
output push pull output push pull drain max speed
trên thực hiện: drain max speed
max speed 50Hz max speed 50Hz 50Hz
50Hz
GPIOA->CRL=(8<<0)|
(8<<4)|(8<<8) Cấu hình chân Cấu hình chân Cấu hình chân
Cả ba câu kia
191 Dòng lệnh lập trình thanh PA0,PA1,PA2 PA0,PA1,PA2 PA0,PA1,PA2 2
đều đúng
ghi CRL của STM32 ở input pull down input pull up input floating
trên thực hiện:
GPIOC->ODR=(1<<7)|
Cấu hình các
(1<<8)|(1<<9) Cung cấp bit 0 ra Cung cấp bit 1 ra Cấu hình các chân
chân 7, 8, 9
192 Dòng lệnh lập trình thanh các chân 7, 8, 9 các chân 7, 8, 9 7, 8, 9 PORTC là 2
PORTC là ngõ
ghi ODR của STM32 ở của PORTC của PORTC ngõ ra
vào
trên thực hiện:
GPIOC->BSRR
=(1<<23)| (8<<24)|
Để đưa chân 7, Để đưa chân 23, Để đưa chân 23, Để đưa chân 7,
(8<<25)
193 8, 9 PORTC lên 24, 25 PORTC 24, 25 PORTC về 8, 9 PORTC về 2
Dòng lệnh lập trình thanh mức cao lên mức cao mức thấp mức thấp
ghi BSRR của STM32 ở
trên thực hiện:
Một LED gắn vào cổng
ra vi điều khiển nối tiếp
với 1 điện trở, biết điện
áp mức cao ngõ ra là 5V,
194 điện áp rơi trên LED khi 100Ω 150Ω 200Ω 250Ω 2
sáng là 3V, dòng qua
LED là 20mA, điện trở
cần có giá trị bằng bao
nhiêu?
Để chia dòng với
Cấp nguồn cho Cung cấp mức
điện trở kéo lên Để nạp điện cho
195 nút nhấn hoạt logic 1 cho STM32 2
bên trong tụ
động khi nút không nhấn
Trong hình kết nối nút STM32
nhấn vào STM32 hình vẽ
trên, điện trở kéo lên
(Pull up) có chức năng
gì?

01101001B
196 10010110B 11001001B 01100110B 2
Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở trên,
muốn sáng số 5 trên LED 7
đoạn Anode chung cần cấp ra
cổng điều khiển dữ liệu bao
nhiêu?
01101001B
197 10010110B 11001001B 01100110B 2
01101101B
Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở
trên, muốn sáng số 5 trên
LED 7 đoạn Kathode chung
cần cấp ra cổng điều khiển
dữ liệu bao nhiêu?

198 1 2 3 4 2
Trong sơ đồ kết nối LED 7
đoạn với vi điều khiển ở
trên, tại một thời điểm vi
điều khiển cung cấp dữ liệu
cho mấy LED 7 đoạn?
199 Cạnh lên của tín Cạnh xuống của Cạnh xuống của Cạnh xuống của 2
hiệu E tín hiệu E tín hiệu RS tín hiệu RW

Trong giản đồ thời gian


của Text LCD hình trên,
dữ liệu sẽ được ghi vào
LCD ở:

R4R3R2R1= R4R3R2R1= R4R3R2R1= R4R3R2R1=


200 Trong một bàn phím ma 2
0000B 1111B 0001B 1000B
trận hình trên. Nếu kéo
điện trở Pull Up ở tất cả
các cột và cấp mức 0 ra
các cột. Nếu không có
phím nhấn dữ liệu đọc từ
các hàng sẽ bằng:

R4R3R2R1=
Trong một bàn phím ma R4R3R2R1= R4R3R2R1= R4R3R2R1=
201 0000B 2
trận hình trên. Nếu kéo 1111B 0001B 1000B
1110B
điện trở Pull Up ở tất cả
các cột và cấp mức 0 ra
các cột. Nếu nhấn phím
trên cùng bên trái
(khoanh tròn) dữ liệu đọc
từ các hàng sẽ bằng:
202 Các tham số thường khởi Tự động chuyển Chế độ DMA Tần số lấy mẫu Cả ba câu kia 2
động cho ADC là: kênh (Auto (DMA Mode); (Sampling đều đúng
Injected Mode); Chế độ ngắt Frequency); Độ
Ngưỡng chuyển
đổi ngõ vào (Interrupt phân giải
(Trigger Mode); Chế độ (Resolution); Định
Threshold); quét (Scan dạng dữ liệu đầu ra
Nguồn đầu vào Mode) (Data Format)
(Input Source)
Trong thư viện HAL của Cân chỉnh nơi
STM32 hàm Chọn khối ADC; chứa dữ liệu trên Chọn chế độ biến
Cả ba câu kia
203 HAL_ADC_Init() sử Chọn Clock; thanh ghi dữ đổi; Chọn số lượng 2
đều đúng
dụng khởi động các tham Chọn độ phân giải liệu; Chọn chế kênh ADC sử dụng
số: độ quét
HAL_ADC_Init(); HAL_ADC_Start; HAL_ADC_Init(); HAL_ADC_Init();
Để sử dụng ADC của HAL_ADC_ConfigCh HAL_ADC_Init(); HAL_ADC_ConfigCh HAL_ADC_ConfigCha
annel; HAL_ADC_ConfigCha annel; nnel;
STM32 theo chế độ
HAL_ADC_Start; nnel; HAL_ADC_Start; HAL_ADC_PollForCo
204 Polling có thể sử dụng nversion; 2
HAL_ADC_GetValue; HAL_ADC_PollForCo HAL_ADC_PollForC
các hàm HAL theo trình HAL_ADC_PollForCo nversion; onversion; HAL_ADC_Start;
tự: nversion; HAL_ADC_GetValue; HAL_ADC_GetValue; HAL_ADC_GetValue;
HAL_ADC_Stop HAL_ADC_Stop HAL_ADC_Stop HAL_ADC_Stop
SPI_CR1; SPI_CT1; SPI_CR1; SPI_CR1;
Các thanh ghi thường sử SPI_CR2; SPI_CT2; SPI_CR2; SPI_CR2;
205 dụng của khối SPI của 2
SPI_SS; SPI_SR; SPI_SR; SPI_ST;
STM32 bao gồm:
SPI_DR SPI_DR SPI_DR SPI_DR
206 Các thông số khởi động Chọn cổng SPI; Chọn số lượng Chọn cổng SPI; Chọn cổng SPI; 2
cho cổng SPI của STM32 Chọn chế độ cổng SPI; Chọn Chọn chế độ Chọn chế độ
bao gồm: Master/Slaver; Số chế độ Master Master/Slaver; Số Master/Slaver;
dây truyền; Kích /Slaver; Số dây dây truyền; Số Số dây truyền;
thước dữ liệu truyền; Kích lượng dữ liệu Kích thước dữ
truyền; Pha và thước dữ liệu truyền; Pha và cực liệu truyền; Pha
cực của clock; truyền; Pha và của clock; Tần số và cực của clock;
Tần số Clock; cực của clock; Clock; Chọn Tần số Clock;
Chọn số Slaver Tần số Clock; Slaver bằng phần Chọn Slaver
truyền dữ liệu với Chọn Slaver cứng hay phần bằng phần cứng
bằng phần cứng
Master; Truyền mềm; Truyền hay phần mềm;
hay phần mềm;
MSB hay LSB MSB hay LSB Truyền MSB hay
Truyền MSB hay
trước trước LSB trước
LSB trước
HAL_SPI_Init; HAL_SPI_Init; HAL_SPI_Init;
HAL_SPI_Init;
HAL_SPI_DeInit; HAL_SPI_Config; HAL_SPI_Start;
HAL_SPI_DeInit;
HAL_SPI_Transmit; HAL_SPI_Transmit; HAL_SPI_Transmit;
Các hàm trong thư viện HAL_SPI_Transmit;
HAL_SPI_Receive HAL_SPI_Receive HAL_SPI_Receive
207 HAL cho cổng SPI của HAL_SPI_Receive 2
HAL_SPI_Transmit HAL_SPI_Transmit HAL_SPI_Transmit
STM32: Receive Receive
HAL_SPI_Transceive
Receive
HAL_SPI_GetState
HAL_SPI_GetStat HAL_SPI_GetState HAL_SPI_GetState
HAL_SPI_GetError HAL_SPI_GetError
HAL_SPI_GetError HAL_SPI_GetError

Slave có địa chỉ


Được tất cả các Được Slaver Được Slaver nhận
đúng với địa chỉ
208 Slaver nhận và xử nhận được tín được tín hiệu SS=1 2
Master cung cấp
lý hiệu SS=0 nhận nhận
nhận
Trong sơ đồ kết nối, dữ
liệu từ Master cung cấp
tới chân MOSI sẽ:
Theo chuẩn SPI dữ liệu Đơn công chỉ từ
Đơn công chỉ từ Cả ba câu kia
209 có thể được truyền theo Master tới Song công 2
Slaver tới Master đều đúng
chế độ: Slaver
Nhận dữ liệu ở
Khi nhận dữ liệu truyền
cạnh lên hoặc Đồng bộ bằng
tới từ Master, Slaver Kiểm tra trạng
xuống của tín Bắt đầu nhận dữ cách so sánh từ
210 trong truyền nhận SPI thay đổi logic 2
hiệu Clock mà liệu khi SS=0 đồng bộ tới từ
đồng bộ với Master bằng của đường MOSI
nó nhận từ Master
cách nào?
Master
211 Khi truyền dữ liệu tới Truyền dữ liệu ở Kiểm tra trạng Bắt đầu nhận dữ Đồng bộ bằng 2
cạnh lên hoặc
Master, Slaver trong
xuống của tín cách so sánh từ
truyền nhận SPI đồng bộ thay đổi logic
hiệu Clock mà liệu khi SS=0 đồng bộ tới từ
với Master bằng cách của đường MOSI
nó nhận từ Master
nào?
Master
Tốc độ, chu kỳ Tốc độ, chu kỳ Tốc độ, chu kỳ
Tốc độ, pha của
nhiệm vụ của nhiệm vụ của nhiệm vụ của
clock; Chế độ
clock; Chế độ clock; Chế độ clock; Chế độ địa
địa chỉ; Địa chỉ
địa chỉ; Địa chỉ địa chỉ; Địa chỉ chỉ; Địa chỉ Slaver;
Slaver; Chống
Các tham số khởi động Master; Chống Slaver; Chống Chống nhiễu; Gọi
212 nhiễu; Gọi tổng 2
cho I2C của STM32 là: nhiễu; Gọi tổng nhiễu; Gọi riêng; tổng quát; Thời
quát; Thời gian
quát; Thời gian Thời gian tăng gian tăng trên
tăng trên SDA;
tăng trên SDA; trên SDA; Chế SDA; Chế độ
Chế độ nhanh;
Chế độ nhanh; độ nhanh; Gửi nhanh; Gửi bit
Gửi bit ACK
Gửi bit ACK bit ACK ACK
Lệnh I2C1->OAR1 = Khối I2C1 là Khối I2C1 là Khối I2C1 là Khối I2C1 là
213 (0x50 << 1) viết cho Slaver có địa chỉ Slaver có địa chỉ Master có địa chỉ Master có địa chỉ 2
STM32 sẽ khởi động: là 80 là 50 là 80 là 50
HAL_I2C_Init; HAL_I2C_Init;
HAL_I2C_DeInit HAL_I2C_DeInit HAL_I2C_Init;
HAL_I2C_Master HAL_I2C_Master HAL_I2C_Init;
HAL_I2C_DeInit
_Trans; _Transmit; HAL_I2C_DeInit
HAL_I2C_Master
Các hàm trong thư viện HAL_I2C_Master HAL_I2C_Master HAL_I2C_MOSI
_Transeive;
214 HAL cho cổng I2C của _Rece; _Receive; HAL_I2C_MISO; 2
HAL_I2C_Slave_
STM32: HAL_I2C_Slave_ HAL_I2C_Slave_ HAL_I2C_SOMI; Transceive;
Trans; Transmit; HAL_I2C_SIMO; HAL_I2C_Stop()
HAL_I2C_Slave HAL_I2C_Slave_ HAL_I2C_Stop()
_Rece; Receive;
HAL_I2C_Stop() HAL_I2C_Stop()
215 Khi nhận dữ liệu truyền Nhận dữ liệu ở Kiểm tra trạng Bắt đầu nhận dữ Đồng bộ bằng 2
tới từ Master, Slaver cạnh lên hoặc thay đổi logic liệu khi tín hiệu cách so sánh từ
xuống của tín
trong truyền nhận I2C
hiệu Clock mà đồng bộ tới từ
đồng bộ với Master bằng của đường SDA đồng bộ tích cực
nó nhận từ Master
cách nào?
Master
Truyền dữ liệu ở
Khi truyền dữ liệu tới
cạnh lên hoặc Đồng bộ bằng
Master, Slaver trong Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
216 truyền nhận I2C đồng bộ thay đổi logic liệu khi tín hiệu 2
hiệu Clock mà đồng bộ tới từ
với Master bằng cách của đường SDA đồng bộ tích cực
nó nhận từ Master
nào?
Master

Slave có địa chỉ


Được tất cả các Được Slaver mà
Được Slaver có địa đúng với địa chỉ
217 Slaver nhận và Master chỉ định 2
chỉ bằng 1 nhận Master cung cấp
Trong sơ đồ kết nối trên, xử lý trước nhận
nhận
dữ liệu từ Master cung
cấp tới chân SDA sẽ:
Theo chuẩn I2C dữ liệu Đơn công chỉ từ Bán song công
Đơn công chỉ từ
218 có thể được truyền theo Master tới Song công giữa Master và 2
Slaver tới Master
chế độ: Slaver Slaver
Baud Rate; RE; Baud Rate; RE; Baud Rate; RE;
Baud Rate; RE;
TE; Word TE; Word TE; Word Length;
TE; Word
Length; Length; Parity; Stop bits; Length;
Parity; Start bits; Parity; Stop bits; Oversampling;
Parity; Stop bits;
Các tham số cần khởi Oversampling; Oversampling; Buffer
Oversampling;
219 động cho USART của Buffer Size; Buffer Size; Enable/Disable; 2
Buffer Size;
STM32 là: Error Checking; Error Checking; Error Checking;
Error Checking;
Flow Control; Flow Control; Flow Control;
Flow Control;
GPIO GPIO GPIO
GPIO In/Out;
Configuration; Configuration; Configuration;
DMA; Syn/Asyn
DMA; Syn/Asyn DMA; Syn/Asyn DMA; Syn/Asyn
Mode
Mode Mode Mode
HAL_UART_Init; HAL_UART_Init; HAL_UART_Init;
HAL_UART_DeInit; HAL_UART_DeInit; HAL_UART_Init; HAL_UART_Asyn;
HAL_UART_Transmit; HAL_UART_Transmit; HAL_UART_Syn; HAL_UART_Transmit;
HAL_UART_Receive HAL_UART_Receive; HAL_UART_Transmit; HAL_UART_Receive;
HAL_UART_Transmit_ HAL_UART_Transmit_I HAL_UART_Receive; HAL_UART_Transmit_I
Các hàm trong thư viện INT; T; HAL_UART_Transmit_IT; T;
220 HAL cho cổng USART HAL_UART_Receive_I HAL_UART_Receive_I HAL_UART_Receive_IT; HAL_UART_Receive_I 2
NT; T; HAL_UART_Transmit_D T;
của STM32: HAL_UART_Transmit_ HAL_UART_Transmit_ MA; HAL_UART_Transmit_
DMA; DMA; HAL_UART_Receive_DM DMA;
HAL_UART_Receive_ HAL_UART_Receive_D A; HAL_UART_Receive_D
DMA; MA; HAL_UART_IRQHandl MA;
HAL_UART_IRQHand HAL_UART_IRQHandl er; HAL_UART_IRQHa
ler; er; ndler;
Nhận dữ liệu ở
Khi nhận dữ liệu trong
cạnh lên hoặc Đồng bộ bằng
truyền nhận USART chế Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
221 độ Asynchronous, bên thay đổi logic liệu khi tín hiệu 2
hiệu SCK mà nó đồng bộ tới từ
nhận đồng bộ với bên của đường TX đồng bộ tích cực
nhận từ bên bên truyền
truyền bằng cách nào?
truyền
Nhận dữ liệu ở
Khi nhận dữ liệu trong
cạnh lên hoặc Đồng bộ bằng
truyền nhận USART chế Kiểm tra trạng Bắt đầu nhận dữ
xuống của tín cách so sánh từ
222 độ Synchronous, bên thay đổi logic liệu khi tín hiệu 2
hiệu SCK mà nó đồng bộ tới từ
nhận đồng bộ với bên của đường TX đồng bộ tích cực
nhận từ bên bên truyền
truyền bằng cách nào?
truyền
Cho phép bạn
truyền và nhận Đảm bảo rằng dữ
Dữ liệu được
dữ liệu liên tục liệu được truyền và
Các lợi điểm khi sử dụng truyền và nhận
mà không cần nhận đúng lúc mà Cả ba câu kia
223 truyền USART ở chế độ mà không cần 2
phải cài đặt từng không bị ngắt gián đều đúng
DMA là: can thiệp của
byte hoặc từng đoạn bởi xử lý
CPU
khung dữ liệu CPU
một
CPU có thể thực
hiện các công CPU sẽ nhận CPU không cần
Các lợi điểm khi sử dụng Tốc độ truyền dữ
224 việc khác khi được dữ liệu điều khiển việc 2
ngắt nhận USART là: liệu cao hơn
không có dữ liệu nhanh hơn nhận dữ liệu
truyền tới
#include
"Device/Include/stm32f1
0x.h"
void gpio_init(void)
{
RCC->APB2ENR= (1<<3)
GPIOB->CRL= (3<<28);
GPIOB->CRH=(3<<0)|(3<<4);
}
void delay(volatile uint32_t a )
{ a=a*4000; Nhấp nháy 3 led
while(a--); } Nhấp nháy 3 led Nhấp nháy led
chân nối Nhấp nháy led
int main(void) chân nối Anode chân nối
225 Kathode vào các chân nối Anode 3
{ gpio_init(); vào các chân Kathode vào
chân PB7, PB8, vào chân PB1
while(1) PB7, PB8, PB9 chân PB1
{ PB9
GPIOB->ODR= (1<<7)|(1<<8)|
(1<<9);
delay(500);
GPIOB->ODR&= ~((1<<7)|
(1<<8)|(1<<9));
delay(500);
}}
Chương trình viết dưới
lớp thanh ghi của STM32
thực hiện:
226 #include Điều khiển các Điều khiển các Điều khiển các Điều khiển các 3
"Device/Include/stm32f10x.h
LED nối LED nối Anode LED nối Anode LED nối
void gpio_init(void)
{
Kathode vào vào cổng B tắt vào cổng B sáng Kathode vào
cổng B tắt dần dần dần cổng B sáng dần
RCC->APB2ENR= (1<<3);
GPIOB->CRL= (3<<20)|(3<<24)|
(3<<28);
GPIOB->CRH= (3<<0)|(3<<4)|
(3<<8)|(3<<12);
}
void delay(volatile uint32_t a )
{ a=a*4000;
while(a--); }
int main(void)
{ gpio_init();
while(1)
{ uint8_t i=0;
for(i=5;i<=12;i++)
{
GPIOB->ODR= (1<<i);
delay(500);
GPIOB->ODR&= ~(1<<i);
delay(500);
}}
Chương trình viết dưới
lớp thanh ghi của STM32
thực hiện:
Vùng nhớ Flash của
STM32 Cortex có địa chỉ
227 từ 0x08000000 tới 16KB 32KB 64KB 128KB 3
0x0801FFFF sẽ có dung
lượng là:
228 #include "stm32f4xx_hal.h" Điến khiển LED Chuyển trạng Điến khiển LED Điều khiển LED 3
#define LED_PIN GPIO_PIN_13 sáng khi nhấn thái sáng tắt của sáng khi không chớp tắt khi nhấn
#define LED_PORT GPIOC
nút LED khi nút nhấn nút nút
#define BUTTON_PIN
GPIO_PIN_0 nhấn tác động
#define BUTTON_PORT GPIOA
int main(void) {
HAL_Init();
--
HAL_RCC_GPIOC_CLK_ENABL
E();
--
HAL_RCC_GPIOA_CLK_ENABL
E();
GPIO_InitTypeDef
LED_InitStruct;
LED_InitStruct.Pin = LED_PIN;
LED_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
LED_InitStruct.Speed =
GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_PORT,
&LED_InitStruct);
GPIO_InitTypeDef
BUTTON_InitStruct;
BUTTON_InitStruct.Pin =
BUTTON_PIN;
BUTTON_InitStruct.Mode =
GPIO_MODE_INPUT;
BUTTON_InitStruct.Pull =
GPIO_PULLUP;
HAL_GPIO_Init(BUTTON_PORT,
&BUTTON_InitStruct);
while (1) {
GPIO_PinState buttonState =
HAL_GPIO_ReadPin(BUTTON_P
ORT, BUTTON_PIN);
if (buttonState ==
GPIO_PIN_RESET)
{ HAL_GPIO_TogglePin(LE
D_PORT, LED_PIN);
HAL_Delay(100);
}}}
Chương trình viết dưới
lớp thư viện HAL cho
STM32 thực hiện:
229 #include "stm32f4xx_hal.h" Sáng các số từ 0 Sáng lần lượt các Sáng lần lượt các Sáng lần lượt các 3
#define SEGMENT_PORT GPIOA
#define DIGIT_PORT GPIOB đến 9 lên 1 LED số từ 0 đến 9 lên số từ 0 đến 9 lên 4 số từ 0 đến 3 lên
const uint8_t digitValues[10] = {
0x3F,0x06, 0x5C,0x4F,0x66, 7 đoạn nối vào 4 LED 7 đoạn LED 7 đoạn các 4 LED 7 đoạn
,0x6D,0x7D,0x07, 0x7F,0x6F GPIOA các đoạn nối vào đoạn nối vào các đoạn nối vào
}; GPIOA, các tín GPIOB, các tín GPIOA, các tín
void displayDigit(uint8_t digit)
{ HAL_GPIO_WritePin(DIGIT_PO hiệu chọn LED hiệu chọn LED nối hiệu chọn LED
RT, DIGIT_1_PIN DIGIT_2_PIN| nối vào GPIOB vào GPIOA nối vào GPIOB
DIGIT_3_PIN|DIGIT_4_PIN,
GPIO_PIN_RESET);
switch (digit) {
case 1:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_1_PIN, GPIO_PIN_SET);
break;
case 2:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_2_PIN, GPIO_PIN_SET);
break;
case 3:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_3_PIN, GPIO_PIN_SET);
break;
case 4:
HAL_GPIO_WritePin(DIGIT_POR
T, DIGIT_4_PIN, GPIO_PIN_SET);
break;
}}
int main(void) {
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENAB
LE();
__HAL_RCC_GPIOB_CLK_ENAB
LE();
GPIO_InitTypeDef
GPIO_InitStruct
GPIO_InitStruct.Pin =
SEGMENT_A_PIN|
SEGMENT_B_PIN|
SEGMENT_C_PIN|
SEGMENT_D_PIN|
SEGMENT_E_PIN|
SEGMENT_F_PIN|
SEGMENT_G_PIN|DIGIT_1_PIN|
DIGIT_2_PIN|DIGIT_3_PIN|
DIGIT_4_PIN;
GPIO_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed =
GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(SEGMENT_PO
RT, &GPIO_InitStruct);
while (1) {
for (uint8_t digit = 1; digit <= 4;
digit++) {
for (uint8_t number = 0; number <
10; number++)
{ HAL_GPIO_WritePin(
SEGMENT_PORT,SEGMENT_A
_PIN|SEGMENT_B_PIN|
SEGMENT_C_PIN|
SEGMENT_D_PIN |
SEGMENT_E_PIN|
SEGMENT_F_PIN|
SEGMENT_G_PIN,
digitValues[number]);
displayDigit(digit);
HAL_Delay(1000);
} }}}
Chương trình viết dưới lớp
thư viện HAL cho STM32
thực hiện:
230 void LCD_W(uint8_t data) Ghi dữ liệu 8 bit Ghi dữ liệu 8 bit Ghi dữ liệu 8 bit Cả ba câu kia 3
{ HAL_GPIO_WritePin(RS_PORT,
RS_PIN, GPIO_PIN_SET);
tới LCD bằng tới LCD bằng hai tới LCD bằng một đều đúng
LCD_Send4Bit(data >> 4); hai lần 4 bit, 4 lần 4 bit, 4 bit lần ghi
HAL_GPIO_WritePin(EN_PORT,EN bit cao trước, 4 thấp trước, 4 bit
_PIN, GPIO_PIN_SET); bit thấp sau cao sau
delay(1);
HAL_GPIO_WritePin(EN_PORT,
EN_PIN, GPIO_PIN_RESET);
LCD_Send4Bit(data & 0x0F);
HAL_GPIO_WritePin(EN_PORT,
EN_PIN, GPIO_PIN_SET);
delay(1);
HAL_GPIO_WritePin(EN_PORT,
EN_PIN, GPIO_PIN_RESET);
delay(2);
Hàm LCD_W cho STM32
dưới lớp thư viện HAL ở
trên thực hiện:
void scanKeyboard(void) {
for (int i = 0; i < ROWS; i++)
{
HAL_GPIO_WritePin(row_ports
[i], row_pins[i],
GPIO_PIN_RESET);
for (int j = 0; j < COLS; j++) {
ROWS và COLS
if HAL_GPIO_ReadPin ROWS và COLS
(col_ports[j], col_pins[j]) == có 1 trong các
ROWS và COLS có 1 trong các ROWS và COLS
GPIO_PIN_RESET) { giá trị nhị phân
231 có giá trị từ 1 giá trị nhị phân có giá trị từ 0 đến 3
}} từ 0001B;
HAL_GPIO_WritePin(row_ports đến 4 từ 0000B đến 3
0010B; 0100B;
[i], row_pins[i], 1111B
GPIO_PIN_SET); 1000B
}}
Sau khi gọi hàm quét bàn
phím ma trận viết dưới
lớp thư viện HAL cho
STM32 ở trên sẽ được:
232 ADC_HandleTypeDef hadc1; Khởi động khối Khởi động khối Khởi động khối Khởi động khối 3
hadc1.Instance = ADC1; ADC1; chạy 1 ADC1; chạy 16 ADC1; chạy 1 ADC1; chạy 1
hadc1.Init.ClockPrescaler =
ADC_CLOCK_SYNC_PCLK_D
kênh biến đổi; kênh biến đổi; kênh biến đổi; Chế kênh biến đổi;
IV4; Chế độ biến đổi Chế độ biến đổi độ biến đổi liên Chế độ biến đổi
hadc1.Init.Resolution = single mode; Độ single mode; Độ tục; Độ phân giải single mode; Độ
ADC_RESOLUTION_12B; phân giải 12 bit; phân giải 12 bit; 12 bit; Dữ liệu phân giải 16 bit;
hadc1.Init.DataAlign = Dữ liệu được Dữ liệu được được chỉnh về bên Dữ liệu được
ADC_DATAALIGN_RIGHT;
chỉnh về bên chỉnh về bên phải của thanh ghi chỉnh về bên
hadc1.Init.ScanConvMode =
DISABLE; phải của thanh phải của thanh dữ liệu phải của thanh
hadc1.Init.EOCSelection = ghi dữ liệu ghi dữ liệu ghi dữ liệu
ADC_EOC_SINGLE_CONV;
hadc1.Init.ContinuousConvMode
= DISABLE;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) !=
HAL_OK)
{ Error_Handler(); }
Đoạn chương trình
STM32 dưới lớp thư viện
HAL trên thực hiện:
#include <stdio.h>
#define NUM_ROWS 4
#define NUM_COLS 4
keypad[NUM_ROWS]
[NUM_COLS] = {
{1, 2, 3, 'A'},
{4, 5, 6, 'B'},
{7, 8, 9, 'C'},
{'*', 0, '#', 'D'}
};
char readKeypad(int col, int row)
{
233 4 1 Ký tự A 0x0A 3
return keypad[row][col];
}
int main() {
int col = 4;
int row = 1;
char key = readKeypad(col,
row);
}
Sau đoạn chương trình
trên sẽ được biến “key”
bằng
234 #include <stdio.h> Str={0x01,0x06, Str={0x21,0x26, Str={0x31,0x36,0x Str={0x41,0x46, 3
int main() { 0x04,0x02} 0x24,0x22} 34,0x32} 0x44,0x42}
int num = 1642;
char str[10];
snprintf(str, sizeof(str), "%d",
num);
printf("Result: %s\n", str);
return 0;
}
Sau khi thực hiện chương
trình C trên biến str có
giá trị là:
Một ADC 10 bit có điện
áp đầy thang là 3.3V đọc
điện áp từ một cảm biến
nhiệt độ có độ nhạy 24.748
235 34.748 °C 44.748 °C 54.748 °C 3
10mV/oC, điện áp tại 0oC °C(39.67)
là 0.5V. Giá trị độc được
là 123 sẽ tương ứng với
nhiệt độ là:
236 #include "stm32f4xx_hal.h" Thay đổi trạng Thay đổi trạng Thay đổi trạng thái Thay đổi trạng 3
void Timer_Config(void) thái chân 5 thái chân 5 chân 5 GPIOA sau thái chân 5
{ TIM_HandleTypeDef htim;
--HAL_RCC_TIM2_CLK
GPIOA sau mỗi GPIOA sau mỗi mỗi khoảng thời GPIOA sau mỗi
_ENABLE(); khoảng thời gian khoảng thời gian gian 1 giây bằng khoảng thời gian
htim.Instance = TIM2; 1/10 giây bằng 1/10 giây bằng quét vòng 1 giây bằng
htim.Init.Prescaler = quét vòng chương trình chương trình
HAL_RCC_GetPCLK1Freq() / ngắt ngắt
1000 - 1;
htim.Init.CounterMode =
TIM_COUNTERMODE_UP;
htim.Init.Period=1000 - 1;
htim.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim);
HAL_NVIC_SetPriority(TIM2_IR
Qn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_IR
Qn);
HAL_TIM_Base_Start_IT(&htim)
;
}
HAL_TIM_PeriodElapsedCallbac
k(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
HAL_GPIO_TogglePin(GPIOA,
GPIO_PIN_5);
}}
int main(void) {
HAL_Init();
Timer_Config();
--HAL_RCC_GPIOA_ CLK
_ENABLE();
GPIO_InitTypeDef
GPIO_InitStruct = {0};
GPIO_InitStruct.Pin =
GPIO_PIN_5;
GPIO_InitStruct.Mode =
GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull =
GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,
&GPIO_InitStruct);
while (1) {
}}
Chương trình STM32 dưới
lớp thư viện HAL ở trên
thực hiện:
237 #include "stm32f4xx_hal.h" Cấu hình kênh 2 Cấu hình kênh 1 Cấu hình kênh 1 Cấu hình kênh 1 3
TIM_HandleTypeDef htim; của Timer2 hoạt của Timer2 hoạt của Timer2 hoạt của Timer2 hoạt
void Timer_PWM_Config(void) {
động ở chế độ động ở chế độ động ở chế độ động ở chế độ
TIM_OC_InitTypeDef
sConfigOC; Fast PWM với Fast PWM với PWM mode 1 với Fast PWM chu
--HAL_RCC_TIM2_CLK_ chu kỳ nhiệm vụ mức cao là 1000 chu kỳ nhiệm vụ là kỳ là 500 xung
ENABLE(); là 50% xung 50%
htim.Instance = TIM2;
htim.Init.Prescaler = 0;
htim.Init.CounterMode =
TIM_COUNTERMODE_UP;
htim.Init.Period = 1000;
htim.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim);
sConfigOC.OCMode =
TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500;
sConfigOC.OCPolarity =
TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode =
TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(
&htim, &sConfigOC,
TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim,
TIM_CHANNEL_1);
}
int main(void) {
HAL_Init();
Timer_PWM_Config();
while (1) {
}}
Chương trình STM32 dưới
lớp thư viện HAL ở trên
thực hiện:
238 #include "stm32f4xx_hal.h" Có cạnh xuống ở Có cạnh lên ở Có mức thấp ở Có mức cao ở 3
void EXTI_Config(void) { chân 0 cổng chân 0 cổng chân 0 cổng chân 0 cổng
--HAL_RCC_GPIOA_
CLK_ENABLE();
GPIOA GPIOA GPIOA GPIOA
GPIO_InitTypeDef
GPIO_InitStruct = {0};
GPIO_InitStruct.Pin =
GPIO_PIN_0;
GPIO_InitStruct.Mode =
GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull =
GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,
&GPIO_InitStruct);
HAL_NVIC_SetPriority(EXTI0_
IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI0
_IRQn);
}
void
HAL_GPIO_EXTI_Callback(uin
t16_t GPIO_Pin) {
if (GPIO_Pin ==
GPIO_PIN_0) {
}}
int main(void) {
HAL_Init();
EXTI_Config();
while (1) {
}}
Chương trình STM32
dưới lớp thư viện HAL ở
trên chương trình ngắt sẽ
thực hiện khi:
239 static void MX_TIM2_Init(void) { Khởi động Khởi động Khởi động Timer2 Khởi động 3
htim2.Instance = TIM2; Timer2 hoạt Timer2 hoạt hoạt động ở chế độ Timer2 hoạt
htim2.Init.Prescaler = 0;
động ở chế độ động ở chế độ one -pulse tạo ra động ở chế độ
htim2.Init.CounterMode =
TIM_COUNTERMODE_UP; encoder đếm sự kiện ở xung ở kênh tạo ra xung
htim2.Init.Period = 65535; kênh số 1 PWM1 PWM ở kênh
htim2.Init.ClockDivision = PWM1
TIM_CLOCKDIVISION_DIV1;
HAL_TIM_OnePulse_Init(&htim2,
TIM_OPMODE_SINGLE);
TIM_OC_InitTypeDef
sConfigOC;
sConfigOC.OCMode =
TIM_OCMODE_PWM1;
sConfigOC.OCPolarity =
TIM_OCPOLARITY_HIGH;
sConfigOC.Pulse = 32767;
sConfigOC.OCNPolarity =
TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode =
TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState =
TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState =
TIM_OCNIDLESTATE_RESET;
HAL_TIM_OnePulse_ConfigChann
el(&htim2, &sConfigOC,
TIM_CHANNEL_1);
}
Hàm STM32 dưới lớp thư
viện HAL ở trên thực hiện:
240 #include "stm32f4xx_hal.h" Cấu hình Timer2 Cấu hình Timer2 Cấu hình Timer2 ở Cả ba câu kia đề 3
TIM_HandleTypeDef htim2; ở chế độ ở chế độ chế độ Encoder; đúng
void Encoder; Encoder; Khởi động đọc giá
SystemClock_Config(void);
Khởi động đọc Khởi động đọc trị Encoder ở kênh
static void
MX_GPIO_Init(void);
giá trị Encoder ở giá trị Encoder ở 2;
static void kênh 1 và 2; kênh 1; Lấy giá trị Encoder
MX_TIM2_Init(void); Lấy giá trị Lấy giá trị ở chương trình
int main(void) { Encoder ở Encoder ở chính
HAL_Init(); chương trình chương trình
SystemClock_Config(); chính chính
MX_GPIO_Init();
MX_TIM2_Init();
HAL_TIM_Encoder_Start(&ht
im2, TIM_CHANNEL_1);
HAL_TIM_Encoder_Start(&ht
im2, TIM_CHANNEL_2);
while (1) {
int encoderValue =
__HAL_TIM_GET_COUNTE
R(&htim2);
HAL_Delay(100);
}}
void
SystemClock_Config(void) {
// Cấu hình hệ thống clock
// ...
}
static void
MX_TIM2_Init(void) {
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0;
htim2.Init.CounterMode =
TIM_COUNTERMODE_ENC
ODERMODE2; // Chọn chế
độ encoder
htim2.Init.Period = 65535; //
Giá trị tối đa của bộ đếm
htim2.Init.ClockDivision =
TIM_CLOCKDIVISION_DIV
1;
HAL_TIM_Encoder_Init(&hti
m2);
}
static void
MX_GPIO_Init(void) {
}
Chương trình STM32
dưới lớp thư viện HAL ở
trên thực hiện:
Các lệnh nào sau đây của B BX Cả ba câu kia đề
241 ARM thực hiện việc rẽ BXJ 1
BL BLX đúng
nhánh chương trình?
Trong các lệnh chế độ
242 ARM, mã điều kiện sẽ 2 bit 4 bit 6 bit 8 bit 1
chiếm độ dài là:
Trong các lệnh chế độ
Không có mã
THUMB của ARM, mã
243 2 4 6 điều kiện trong 1
điều kiện sẽ chiếm độ dài
lệnh
là:
Mã điều kiện trong các Xét điều kiện Xác định lệnh có Quản lý các điều Quản lý biến số
244 lệnh ARM được sử dụng sau khi thực hiện được thực hiện kiện của chương trong chương 1
để làm gì? lệnh không trình trình
ARM7 có bao nhiêu mã
245 10 15 12 17 1
điều kiện?
Lệnh không có
Mã điều kiện trong một
hậu tố S vừa Sau khi thực hiện Của một lệnh số Của một lệnh
246 lệnh của ARM khi xét là 1
thực hiện trước dòng lệnh học logic
của:
đó
Kết quả lệnh so
Kết quả lệnh so Kết quả lệnh so Kết quả lệnh so
Khi lệnh có mã điều kiện sánh trước đó là
247 sánh trước đó là sánh trước đó là sánh trước đó là 1
HS nó sẽ thực hiện khi: nhỏ hơn hoặc
lớn hơn lớn hơn hoặc bằng nhỏ hơn
bằng
Điều kiện "EQ" trong
248 lệnh ARM dùng để kiểm Bằng nhau Lớn hơn Lớn hơn hoặc bằng Không bằng 1
tra điều gì?
Điều kiện "NE" trong
249 lệnh ARM dùng để kiểm Bằng nhau Lớn hơn Lớn hơn hoặc bằng Không bằng 1
tra điều gì?
Điều kiện "MI" trong
250 lệnh ARM dùng để kiểm Tràn số Số âm Số dương Tràn bit 1
tra điều gì?
Điều kiện "PL" trong lệnh
Lớn hơn hoặc Nhỏ hơn hoặc
251 ARM dùng để kiểm tra Số âm Tràn bit 1
bằng bằng
điều gì?
252 Điều kiện "VS" trong Tràn Không tràn Nhớ Không nhớ 1
lệnh ARM dùng để kiểm
tra điều gì?
Điều kiện "VC" trong
253 lệnh ARM dùng để kiểm Tràn Không tràn Nhớ Không nhớ 1
tra điều gì?
Điều kiện "HI" trong lệnh Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc bằng
254 ARM dùng để kiểm tra bằng không tính 1
tính dấu dấu có tính dấu
điều gì? dấu
Điều kiện "LS" trong Nhỏ hơn hoặc
Nhỏ hơn không Nhỏ hơn có tính Nhỏ hơn hoặc
255 lệnh ARM dùng để kiểm bằng không tính 1
tính dấu dấu bằng có tính dấu
tra điều gì? dấu
Điều kiện "GE" trong Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc bằng
256 lệnh ARM dùng để kiểm bằng không tính 1
tính dấu dấu có tính dấu
tra điều gì? dấu
Điều kiện "LE" trong Nhỏ hơn hoặc
Nhỏ hơn không Nhỏ hơn có tính Nhỏ hơn hoặc
257 lệnh ARM dùng để kiểm bằng không tính 1
tính dấu dấu bằng có tính dấu
tra điều gì? dấu
Trong mã điều kiện Lớn hơn hoặc
Lớn hơn không Lớn hơn có tính Lớn hơn hoặc bằng
258 ARM, điều kiện "GT" có bằng không tính 1
tính dấu dấu có tính dấu
ý nghĩa gì? dấu
Trong mã điều kiện
259 ARM, điều kiện "AL" có Lặp vô hạn Luôn luôn đúng Luôn không đúng Cảnh báo 1
ý nghĩa gì?
Tiền tố S trong một lệnh Duy trì dấu của Kết quả phép Không duy trì
Kết quả phép tính
260 Parallel của ARM có ý kết quả phép tính chia dư sẽ dấu của kết quả 1
chia dư sẽ luôn âm
nghĩa gì? tính chia dư luôn dương phép tính chia dư
261 Tiền tố Q trong một lệnh Đảm bảo kết quả Kết quả phép tính Cả ba câu kia 1
Arithmetic Parallel của Chấp nhận kết của các phép tính số học là bão hòa đều đúng
ARM có ý nghĩa gì? quả phép tính số nằm trong theo khả năng của
học có tràn khoảng giá trị thanh ghi
được xác định,
thường là giá trị
tối thiểu và tối đa
mà kiểu dữ liệu
có thể biểu diễn
Tiền tố U trong một lệnh Duy trì dấu của Kết quả phép Không duy trì
Kết quả phép tính
262 Arithmetic Parallel của kết quả phép tính chia dư sẽ dấu của kết quả 1
chia dư sẽ luôn âm
ARM có ý nghĩa gì? tính chia dư luôn dương phép tính chia dư
Tiền tố SH trong một Thực hiện các Thực hiện các Thực hiện các Thực hiện các
263 lệnh Arithmetic Parallel phép tính số học phép tính số học phép tính số học phép tính số học 1
của ARM có ý nghĩa gì? có dấu không dấu có dấu dương có dấu âm
Chế độ địa chỉ gián tiếp Giữ độ dời địa chỉ
Chứa địa chỉ bộ Chứa dữ liệu cần Giữ giá trị dịch
264 thanh ghi của ARM sử dữ liệu cần truy 1
nhớ cần truy cập truy cập của địa chỉ
dụng thanh ghi để: cập
Lấy giá trị trong Lấy giá trị trong
Lấy giá trị trong
Lệnh ldr r0, [r1] thực ô nhớ có địa chỉ Lấy giá trị trong r0 ô nhớ có địa chỉ
265 r1 vào thanh ghi 2
hiện: giữ trong r1 vào vào thanh ghi r1 giữ trong r0 vào
r0
thanh ghi r0 thanh ghi r1
Trong các lệnh của ARM
Giữ trong một ô Giữ trong một Mã hóa trong mã Nằm trong ngăn
266 toán hạng tức thời 2
nhớ dữ liệu thanh ghi lệnh xếp
(immediate) được:
Trong chế độ thanh ghi
Giá trị của thanh Giá trị của một
với độ dời tức thời
ghi cộng hoặc thanh ghi được
(Register with immediate Một giá trị được Không có địa chỉ
267 trừ đi một giá trị nạp một giá trị 2
offset) của ARM địa chỉ mã hóa trong lệnh trong chế độ này
được mã hóa mã hóa trong
của dữ liệu cần truy cập
trong lệnh lệnh
là:
Lấy giá trị trong
Lấy giá trị trong
ô nhớ có địa chỉ
Khi r1 =1000, lệnh ldr r0, ô nhớ có địa chỉ Lấy giá trị 1008 Lấy giá trị 1008
268 1000 vào thanh 2
[r1, #8] thực hiện: 1008 vào thanh vào thanh ghi r1 vào thanh ghi r0
ghi r0 sau đó
ghi r0
cộng với 8
269 Trong chế độ thanh ghi Giá trị hai thanh Giá trị của thanh Giá trị của thanh Không có địa chỉ 2
với độ dời thanh ghi ghi cộng hoặc ghi cơ sở (base) ghi độ dời trong chế độ này
(Register with register
offset) của ARM địa chỉ
trừ với nhau
của dữ liệu cần truy cập
là:
Lấy giá trị trong
Lấy giá trị trong
Lấy giá trị r1 + ô nhớ có địa chỉ
Lệnh ldr r0, [r1,r2] thực ô nhớ có địa chỉ Ghi giá trị trong r0
270 r2 vào thanh ghi giữ trong r1 vào 2
hiện: r1 + r2 vào thanh vào địa chỉ r1 + r2
r0 r0 sau đó cộng
ghi r0
với r2
Nạp giá trị 10 Dịch phải logic Dịch trái logic Lấy giá trị trong
Toán hạng LSL #10 thực
271 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
LSL 10 bit 10 bit LSL + 10
Nạp giá trị 10 Dịch phải logic Dịch trái logic Lấy giá trị trong
Toán hạng LSR #10 thực
272 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
LSR 10 bit 10 bit LSR + 10
Nạp giá trị 10 Dịch phải số học Dịch phải logic Lấy giá trị trong
Toán hạng ASR #10 thực
273 vào thanh ghi thanh ghi độ dời thanh ghi độ dời ô nhớ có địa chỉ 2
hiện:
ASR đi 10 bit 10 bit ASR + 10
Nạp giá trị 10 Lấy giá trị trong
Toán hạng ROR #10 thực Quay phải thanh Dịch phải thanh
274 vào thanh ghi ô nhớ có địa chỉ 2
hiện: ghi độ dời 10 bit ghi độ dời đi 10 bit
ROR ROR + 10
Toán hạng RRX thực Quay phải dữ Quay phải dữ Quay phải dữ liệu Quay phải dữ
275 2
hiện: liệu 33 bit liệu 32 bit 16 bit liệu 8 bit
Chế độ địa chỉ thanh ghi Tổng thanh ghi Tổng giữa thanh
Tổng thanh ghi Tổng thanh ghi cơ
với thanh ghi độ dời tỷ lệ cơ sở và thanh ghi cơ sở với
cơ sở và thanh sở và thanh ghi độ
276 (Register with scaled ghi độ dời đã thanh ghi độ dời 2
ghi độ dời đã dời đã được trừ đi
register offset), địa chỉ dữ được cộng thêm đã được quay
được chia tỷ lệ một giá trị
liệu cần truy cập là: một giá trị dịch
Lấy giá trị trong Lấy giá trị trong Lấy giá trị trong ô Lấy giá trị trong
Lệnh ldr r0, [r1, r2, LSL
277 ô nhớ có địa chỉ ô nhớ có địa chỉ nhớ có địa chỉ ô nhớ có địa chỉ 2
#2] thực hiện:
[(r1+r2)<<2)] [r1+(r2<<2)] [(r1+r2+LSL)<<2] [r1+r2+LSL<<2]
Lấy giá trị trong Lấy giá trị trong Lấy giá trị trong ô Lấy giá trị trong
Lệnh ldr r0, [r1, -r2, ASR
278 ô nhớ có địa chỉ ô nhớ có địa chỉ nhớ có địa chỉ [(r1- ô nhớ có địa chỉ 2
#2] thực hiện:
[(r1-r2)>>2)] [r1-(r2>>2)] r2+ASL)<<2] [r1-r2+ASL<<2]
Thay đổi thanh Thay đổi giá trị Thay đổi thanh ghi
Chỉ thị chỉ số trước (Pre- Thay đổi giá trị
ghi chứa địa chỉ dữ liệu bộ nhớ chứa địa chỉ bộ
279 Indexed) trong lệnh dữ liệu bộ nhớ 2
bộ nhớ sau khi trước khi truy nhớ trước khi truy
ARM thực hiện việc: sau khi truy cập.
truy cập. cập. cập.
Lệnh ldr r0, [r1, #4]! r1 = r1 + 4 r0 = [r1] r1 = r1 + 4 [r1]=r0
280 2
thực hiện: r0 = [r1] r1 = r1 + 4 [r1]=r0 r1 = r1 + 4
r0 = [r1] r0 = [r1]
Lệnh ldr r0, [r1, r2, lsl r1 = (r1 + r2) << 2 r1 = r1 + (r2 << 2)
281 r1 = r1 + (r2 << r1 = (r1 + r2) << 2
#2]! thực hiện: r0 = [r1] r0 = [r1]
2) 2
Thay đổi thanh Thay đổi giá trị Thay đổi thanh ghi
Chỉ thị chỉ số sau (Post- Thay đổi giá trị
ghi chứa địa chỉ dữ liệu bộ nhớ chứa địa chỉ bộ
282 Indexed) trong lệnh dữ liệu bộ nhớ 2
bộ nhớ sau khi trước khi truy nhớ trước khi truy
ARM thực hiện việc: sau khi truy cập.
truy cập. cập. cập.
Lệnh ldr r0, [r1], #4 r1 = r1 + 4 r0 = [r1] r1 = r1 + 4 [r1]=r0
283 2
thực hiện: r0 = [r1] r1 = r1 + 4 [r1]=r0 r1 = r1 + 4
Lệnh r0 = [r1] r0 = [r1]
r1 = (r1 + r2) << 2 r1 = r1 + (r2 << 2)
284 ldr r0, [r1], r2, lsl #2 r1 = r1 + (r2 << r1 = (r1 + r2) << 2
r0 = [r1] r0 = [r1]
thực hiện: 2) 2
Sử dụng Post –
Khi ARM sử dụng PC Không thể sử dụng
Có thể sử dụng Có thể sử dụng Index và Pre –
285 làm thanh ghi cơ sở truy Post – Index và 2
Post – Index Pre – Index Index đồng thời
cập bộ nhớ thì: Pre - Index
trong một lệnh
Lấy giá trị trong
Lấy giá trị trong Ghi giá trị của r3 Ghi giá trị của r3
Lệnh ldr r3, [pc, #5] ô nhớ có địa chỉ
286 ô nhớ có địa chỉ vào ô nhớ có địa + 5 vào ô nhớ có 2
thực hiện: pc vào r3 sau đó
pc+5 vào r3 chỉ pc+5 địa chỉ pc
cộng với 5
287 Lệnh ldr Rd, =imm32 Nạp hằng số Nạp hằng số tức Ghi giá trị tức thời Ghi giá trị tức 2
thực hiện: chứa trong bộ thời vào thanh vào bộ nhớ chương thời vào vùng
nhớ chương
trình vào thanh ghi trình nhớ dữ liệu
ghi
Sau các lệnh:
MOV R0, #42
MOV R1, #255
288 297 42 255 Không xác định 2
ADD R0, R0, R1
Thanh ghi R0 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
289 297 42 255 Không xác định 2
ADD R0, R0, R1
Thanh ghi R1 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
290 255 42 213 Không xác định 2
SUB R1, R1, R0
Thanh ghi R1 có giá trị
là:
Sau các lệnh:
MOV R0, #42
MOV R1, #255
291 255 42 213 Không xác định 2
SUB R1, R1, R0
Thanh ghi R0 có giá trị
là:
292 Sau các lệnh: 0 42 255 Không xác định 2
MOV R0, #42
MOV R1, #255
MVN R0, R1
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
293 TST R0, #10 10 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
294 TST R0, #10 BEQ BNE BVS BLT 2
Lệnh rẻ nhánh nào sẽ
thực hiện rẽ nhánh
chương trình:
Sau khi thực hiện lệnh:
MOV R0, #42
295 EOR R0, R0,R0 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
296 AND R0, R0,#0xFF 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
297 AND R0, R0,#0 84 0 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
298 Sau khi thực hiện lệnh: 84 0XFF 42 Không xác định 2
MOV R0, #42
ORR R0, R0,#0xFF
Thanh ghi R0 có giá trị
là:
Sau khi thực hiện lệnh:
MOV R0, #42
299 ORR R0, R0,#0 84 0XFF 42 Không xác định 2
Thanh ghi R0 có giá trị
là:
Lưu giá trị thanh Lưu giá trị thanh Lấy giá trị trong
Lưu giá trị thanh
Lệnh STR R0, [R1] thực ghi R1 ô nhớ có ghi R0 ô nhớ có ô nhớ có địa chỉ
300 ghi R1 vào thanh 2
hiện: địa chỉ giữ trong địa chỉ giữ trong giữ trong R1 vào
ghi R0
R0 R1 thanh ghi R0
Sau khi thực hiện lệnh:
MOV R0, #42
301 CMP R0, #10 BEQ BGT BVS BLT 2
Lệnh rẻ nhánh nào sẽ
thực hiện rẽ nhánh
chương trình:
foo:
ADD R0, R1, R2 ;
BX LR ;
MAIN:
MOV R1, #5 ; Chuyển về sau Chuyển về nhãn Chuyển về nhãn Chuyển tới lệnh
302 MOV R2, #3 ; 2
lệnh “BL foo” MAIN foo “BL LR”
BL foo
Trong đoạn chương trình
trên sau khi thực hiện
lệnh “BX LR” điều khiển
chương trình sẽ:
.thumb
foo:
ADD R1, R1, #5 ;
BX LR ;
.code 32
MAIN:
303 MOV R2,#10; #17 #15 #10 #5 2
MOV R1, #12 ;
BLX foo ;
MOV R2,R1
Sau khi thực hiện đoạn
chương trình trên R2 có
giá trị bằng bao nhiêu?
304 Sau khi thực hiện lệnh:
MOV R0, #42
EOR R0, R0,#0xFF 84 24 42 00 (213) 2
Thanh ghi R0 có giá trị
là:
305 AREA LoopExample, R0=0; R1=10 R0=10; R1=0 R0=11; R1=0 R0=0; R1=11 3
CODE, READONLY
EXPORT main
main
MOV R0, #1
MOV R1, #10
loop_start
ADD R0, R0, #1
SUBS R1, R1, #1
BNE loop_start
SWI 0x11
END
Sau khi thực hiện chương
trình hợp ngữ ARM trên
sẽ được:
306 ADR R4,a
LDR R0,[R4]
ADR R4,b
LDR R1,[R4]
ADD R3,R0,R1
ADR R4,c
LDR R2,[R4] x=a+b+c x=a-b-c x=a+b-c x=-a+b-c 3
SUB R3,R3,R2
ADR R4,x
STR R3,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
307 ADR R4,b
LDR R0,[R4]
ADR R4,c
LDR R1,[R4]
ADD R2,R0,R1
ADR R4,a
LDR R0,[R4] y=a*b+c y=a+b*c y=(a+b)*c y=a*(b+c) 3
MUL R2,R2,R0
ADR R4,y
STR R2,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
308 ADR R4,a z=(a<<2)|(b&15) z=(a&15)|(b<<2) z=(a|(b&15)<<2) z=(a|(b<<2)&15) 3
LDR R0,[R4]
MOV R0,R0,LSL#2
ADR R4,b
LDR R1,[R4]
AND R1,R1,#15
ORR R1,R0,R1
ADR R4,z
STR R1,[R4]
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
309 SUBS R1,R1,#0
ADDEQ R1, R1,#10
Các lệnh hợp ngữ trên if if … else switch …case while 3
tương đương với cấu trúc
lập trình nào trong C?
310 SUB R0,R0
START:
CMP R0,#15
ADDLT R1,R1,R1
ADDLT R0,R0,#1 if if … else switch …case for 3
BLT START
Đoạn chương trình hợp
ngữ ARM trên tương
đương với cấu trúc lập
trình nào trong C?
311 ADR R4,a if (a>b) if (a>b) if (a>b) if (a>b) 3
LDR R0,[R4] { { { {
MOV R0,R0,LSL#2 x= c-d; x=5; x=5; x=c-d
ADR R4,b } y=c+d; y=c+d; }
LDR R1,[R4]
CMP R0,R1
BGE fblock
MOV R0,#5
ADR R4,x
STR R0,[R4]
ADR R4,c
LDR R0,[R4]
ADR R4,d
LDR R1,[R4]
ADD R0,R0,R1 else;
ADR R4,y {
}
STR R0,[R4] x=5; }
else
B after y=c+d;
x= c-d;
fblock: }
ADR R4,c
LDR R0,[R4]
ADR R4,d
LDR R1,[R4]
SUB R0,R0,R1
ADR R4,x
STR R0,[R4]
after: …
Đoạn chương trình hợp
ngữ ở trên tương đương
khi viết trong C:
312 ADR R4,n Tính n*n*n Tính n*n*n chia Tính tổng n số tự Tính n*n chia 2 3
LDR R0,[R4] 2 nhiên đầu tiên
MLA R1,R0,R0,R0
MOV R0,R1,LSR#1
Đoạn chương trình hợp
ngữ trên thực hiện công
việc:
ADR R4,n
LDR R0,[R4]
MOV R1,#0
Loop:
ADD R1,R1,R0 Tính tổng n số tự
313 Tính n*n*n Tính n*n Tính n+n chia 2 3
SUB R0,R0,#1 nhiên đầu tiên
BNE Loop
Đoạn chương trình hợp
ngữ trên thực hiện công
việc:
314 MOV R0, #0
MOV R1, #5
MOV R2, #100
loop:
CMP R1, R2
BGT done
ADD R0, R0, R1
ADD R1, R1, #7 while do … while for switch …case 3
B loop
done:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên tương đương
với cấu trúc lập trình nào
trong C?
315 .data
N .word 10
Sum .word 0
.text
.global main
main:
LDR R0, =N
MOV R1, #0
loop:
ADD R1, R1, R0 while do … while for switch …case 3
SUB R0, R0, #1
CMP R0, #0
BNE loop
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên tương đương
với cấu trúc lập trình nào
trong C?
316 .data Sắp xếp mảng Sắp xếp mảng dữ Sắp xếp mảng dữ Sắp xếp mảng dữ 3
Array .word 5, 2, 9, 1, dữ liệu Array liệu Array theo liệu Array theo giá liệu Array theo
5, 6, 3 theo giá trị từ giá trị từ lớn đến trị từ nhỏ đến lớn giá trị từ lớn đến
Length .word 7 nhỏ đến lớn theo nhỏ theo thuật theo thuật toán nhỏ theo thuật
.text thuật toán quick toán quick sort bubble sort toán bubble sort
sort
.global main
main:
LDR R0, =Array
LDR R1, =Length
outer_loop:
MOV R2, #0
MOV R3, #0
inner_loop:
LDR R4, [R0,
R3]
LDR R5, [R0, R3,
#4]
CMP R4, R5
BLE no_swap
STR R5, [R0, R3]
STR R4, [R0, R3,
#4]
no_swap:
ADD R3, R3, #4
CMP R3, R1
BLT inner_loop
ADD R2, R2, #1
CMP R2, R1
BLT outer_loop
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên thực hiện công
việc:
317 .text Đoạn mã Java Đoạn mã java Đoạn mã Java Đoạn lệnh ở 3
.global main được chuyển đổi nguyên gốc được chuyển đổi trạng thái
main: thành mã máy thành hợp ngữ THUMB
LDR R0, =TCode
BXJ R0
B end
TCode:
@ đoạn code
end:
MOV R7, #1
SWI 0
Trong chương trình
ARM ở trên, đoạn lệnh
sau nhãn “Tcode” là:
318 .data Chuyển đổi Chuyển đổi số Chuyển đổi số Chuyển đổi 3
Input .word 42 chuỗi số hệ 16 nguyên trong nguyên trong chuỗi số hệ 16
Result .word 0 trong “Input” “Input” thành “Input” thành trong “Input”
Buffer .space 10 thành chuỗi số chuỗi ký tự hệ 16 chuỗi ký tự hệ 16 thành chuỗi số
nguyên và lưu và lưu trữ trong và lưu trữ trong bộ nguyên và lưu
.text
trữ trong bộ nhớ bộ nhớ đệm nhớ đệm “Buffer”. trữ trong bộ nhớ
.global main đệm “Buffer”. “Result”. Sau đó, Sau đó, chương đệm “Result”.
main: Sau đó, chương chương trình trình chuyển đổi Sau đó, chương
LDR R0, =Input trình chuyển đổi chuyển đổi chuỗi chuỗi ký tự hệ 16 trình chuyển đổi
LDR R1, =Buffer chuỗi số nguyên ký tự hệ 16 trở trở lại thành số chuỗi số nguyên
BL trở lại thành lại thành số nguyên và lưu trở lại thành
DecimalToHex chuỗi ký tự hệ nguyên và lưu trong biến chuỗi ký tự hệ
LDR R1, =Buffer 16 và lưu trong trong biến “Result” 16 và lưu trong
biến “Result” “Buffer” biến “Buffer”
LDR R2, =Result
BL
HexToDecimal
B end
DecimalToHex:
MOV R2, #0
loop1:
MOV R3, R0, LSR
#4
MUL R4, R3, #16
SUB R0, R0, R4
CMP R3, #9
ADDLS R3, R3,
#'0' ADDHI R3,
R3, #('A' - 10)
STRB R3, [R1],
#1
ADD R2, R2, #1
CMP R0, #0
BNE loop1
STRB R2, [R1],
#1
MOV R7, #0
HexToDecimal:
MOV R3, #0
loop2:
LDRB R4, [R1],
#1
CMP R4, #0
SUB R4, R4, #'0'
ADD R3, R3, R4,
LSL #4
B loop2
done2:
STR R3, [R2]
MOV R7, #0
end:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
ARM trên thực hiện công
việc:
319 .data Tìm giá trị nhỏ Tìm giá trị nhỏ Tìm giá trị lớn Tìm giá trị nhỏ 3
Array .word 5, 2, 9, 1, nhất lưu vào M2 nhất lưu vào M1 nhất lưu vào M2 nhất lưu vào M1
5, 6, 3 giá trị lớn nhất giá trị lớn nhất
Length .word 7 lưu vào M1 lưu vào M2
M1 .word 0
M2 .word 0
.text
.global main
main:
LDR R0, =Array
LDR R1, =Length
LDR R2, =M1
LDR R3, =M2
MOV R4, #0
LDR R5, [R0,
R4]
STR R5, [R2]
STR R5, [R3]
loop:
ADD R4, R4, #4
CMP R4, R1
BGE done
LDR R5, [R0,
R4]
CMP R5, [R2]
BLE not_max
STR R5, [R2]
not_max:
CMP R5, [R3]
BGE loop
@
STR R5, [R3]
B loop
done:
MOV R7, #1
SWI 0
Chương trình hợp ngữ
trên thực hiện công việc:
320 section .text Cấp Clock cho Cấp Clock cho Cấp Clock cho Cấp Clock cho 3
global main GPIOD; GPIOD; GPIOD; GPIOD;
main: Khởi động Khởi động Khởi động GPIOD Khởi động
ldr r0, =0x40023830 GPIOD chân 12 GPIOD chân 12 chân 12 là Output; GPIOD chân 12
mov r1, #0x08 là Input; là Output; Bật LED gắn trên là Output;
str r1, [r0] Nhận dữ liệu từ Bật tắt LED gắn GPIOD chân 12 Cấp mức logic 0
GPIOD chân 12 trên GPIOD chân ra GPIOD chân
ldr r0, =0x40020C00
12 12
mov r1, #0x1000
str r1, [r0]
loop:
ldr r0, =0x40020C18
mov r1, #0x1000
str r1, [r0]

ldr r2, =1000000


delay_on:
subs r2, #1
bne delay_on
ldr r0, =0x40020C1C
mov r1, #0x1000
str r1, [r0]
ldr r2, =1000000
delay_off:
subs r2, #1
bne delay_off
b loop
Chương trình hợp ngữ
trên thực hiện công việc:

GIẢNG VIÊN BIÊN SOẠN


(Ký, ghi rõ họ tên)

Phạm Thế Duy

You might also like