SlideShare a Scribd company logo
1 of 30
Download to read offline
Mục lục
Chương 1: Giới thiệu 1
STM32F103C8T6 2
FreeRTOS 5
libopencm3 5
Không có Arduino 6
Không có IDE 6
Mô hình phát triển 7
Giả thiết 7
Những thứ cần thiết 8
Thiết bị lập trình ST-Link V2 8
Breadboard 9
Dây điện (DuPont) 10
Tụ Bypass 0.1uF 11
Bộ chuyển tiếp USB TTL 12
Bộ nguồn 14
Linh kiện nhỏ 15
Tóm tắt 16
Chương 2: Cài đặt phần mềm 17
Quy ước thư mục được sử dụng 17
Phần mềm điều hành 17
Phần mềm sách 18
libopencm3 18
FreeRTOS 19
~ / stm32f103c8t6 / rtos / Projectmk 19
Trình biên dịch ARM 20
Xây dựng phần mềm 23
Công cụ ST-Link 24
Tóm tắt 25
Chương 3: Power Up và Blink 27
Nguồn 27
Điều chình +3.3V 29
Nguồn USB /+5V 30
Cung cấp +3.3V 30
Quy tắc nguồn điện 31
Ground 32
Reset 32
Showtime 32 ST-Link V2 34
Tiện ích st-flash 36
Đọc STM32 36
Viết ảnh 37
Xóa Flash 38
Tóm tắt 38
Thư mục 38
Chương 4: GPIO 39
Xây dựng miniblink 39
Flashing miniblink 40
Mã nguồn miniblinkc 41
GPIO API 44
Cấu hình GPIO 46
Một dãy ống 51
Đầu vào GPIO 51
Đầu ra kỹ thuật số, Đẩy / Kéo 52
Đầu ra kỹ thuật số, mở cống 53
Đặc điểm GPIO 53
Ngưỡng điện áp đầu vào 55
Ngưỡng điện áp đầu ra 55
Lập trình delay 56
Vấn đề trong lập trình delay 57
Tóm tắt 58
Chương 5: FreeRTOS 59
Cơ sở FreeRTOS 59
Tasking 60
Hàng đợi tin nhắn 60
Semaphores và Mutexes 61
Timers 61
Nhóm sự kiện 62
Chương trình blinky2 62
Xây dựng và kiểm tra blinky2 66
Thi công 66
FreeRTOSConfigh 67
Cách đặt tên FreeRTOS 69
FreeRTOS Macro 70
Tóm tắt 71
Chương 6: USART 73
USART / UART Ngoại vi 73
Dữ liệu không đồng bộ 74
Bộ điều hợp nối tiếp USB 74
Hookup 76
Dự án uart 77
Project 81
Dự án uart2 85
USART API 90
Chứa các tệp 92
Xung 92
Cấu hình 92
DMA 93
Ngắt 93
Đầu vào / đầu ra / trạng thái 93
Ducks-in-a-Row 93
FreeRTOS 94
Nhiệm vụ 94
Hàng đợi 95
Tóm tắt 96
Chương 7: USB nối tiếp 97
Blue Pill USB Số phát hành 97
Giới thiệu về USB 99
Ống và điểm cuối 99
Thiết bị nối tiếp USB 101
Thiết bị nối tiếp USB Linux 101
Thiết bị nối tiếp USB MacOS 102
Thiết bị nối tiếp USB Windows 103
USB GPIO 103
Mã nguồn trình diễn 104
cdcacm_set_config () 105
cdc_control_request () 106
cdcacm_data_rx_cb () 107
USB Task 108
USB nhận 110
Gửi USB 110
Bộ chuyển tiếp USB 111
Tóm tắt 113
Thư mục 114
Chương 8: SPI Flash 115
Giới thiệu W25QXX 115
Giao diện ngoại vi nối tiếp Bus 115
Chip Chọn 117
Hệ thống dây điện và điện áp 117
Mạch SPI 118
Phần cứng / Kiểm soát NSS 118
Cấu hình SPM32 SPI 120
Tốc độ xung SPI 124
Chế độ xung SPI 125
Endianess và chiều dài byte 127
SPI I / O 128
Đọc SR1 128
Đang chờ sẵn sàng 129
Đọc ID nhà sản xuất 130
Viết flash 131
Xóa flash 133
Đọc Flash 136
Trình bày 137
Chạy bản trình diễn 139
ID nhà sản xuất 144
Power Down 144
Tóm tắt 145
Tài liệu tham khảo 145
Chương 9: Code Overlays 147
Kích thích liên kết 147
BỘ NHỚ 149
Ghi chép 151
Section 151
CUNG CẤP 154
Tái sử dụng 154
Xác định Overlay 155
Code Overlay 157
Sơ đồ 159
Quản lý Overlay 159
VMA và tải địa chỉ 160
Biểu tượng liên kết trong code 161
Hàm quản lý Overlay 162
Sơ đồ Overlay 164
Trình bày 165
Trích dẫn Overlay 166
Tải Overlay lên W25Q32 167
Bản trình bày Overlay tiếp theo 171
Thay đổi code Trap 173
Tóm tắt 173
Thư mục 174
Chương 10: Đồng hồ thời gian thực (RTC) 175
Trình bày các dự án 175
Sử dụng cấu hình RTC 175
RTC gián đoạn 176
Ngắt và thiết lập 178
Quy trình dịch vụ ngắt 179
Thông báo tác vụ 181
Mutexes 183
Trình bày 184
Kết nối UART1 187
Chạy Demo 188
rtc_alarm_isr () 190
Bộ điều khiển EXTI 190
Tóm tắt 192
Chương 11: I2C 195
Kênh I2C 195
Master và Slave 196
Bắt đầu và Dừng 196
Dữ liệu bit 197
Địa chỉ I2C 198
Giao dịch I2C 199
PCF8574 GPIO Extender 200
I2C Circuit 202
Dòng PCF8574 INT 203
Cấu hình PCF8574 203
Truyền động PCF8574 GPIO 205
Dạng sóng 206
Demo Mạch 206
Ngắt EXTI 207
Phần mềm I2C 209
Kiểm tra I2C 210
Bắt đầu I2C 211
I2C Viết 213
I2C Đọc 213
I2C Khởi động lại 214
Chương trình demo 215
Phiên bản demo 218
Tóm tắt 220
Chương 12: OLED 223
Màn hình OLED 223
Cấu hình 224
Hiển thị kết nối 226
Tính năng hiển thị 226
Sơ đồ Demo 227
AFIO 228
Đồ họa 230
Pixmap 232
Pixmap Viết 233
Phần mềm đo lường 234
Mô-đun chính 236
Trình bày 238
Tóm tắt 240
Chương 13: OLED Sử dụng DMA 241
Kích thích 241
Mạch 242
Hoạt động DMA 242
Thi hành DMA 242
Trình bày 247
Khởi tạo DMA 249
Khởi chạy DMA 250
Nhiệm vụ quản lý SPI / DMA OLED 251DMA 251
Thủ tục DMA ISR 254
Khởi động lại DMA 255
Thi hành Demo 256
Những thách thức khác 258
Tóm tắt 259
Chương 14: Chuyển đổi tương tự sang số 261
Tài nguyên STM32F103C8T6 261
Demo 262
Đầu vào tương tự PA0 và PA1 263
Cấu hình ngoại vi ADC 263
Chạy Demo 266
Đọc ADC 267
Điện áp tương tự 270
Tóm tắt 271
Thư mục 272
Chương 15: Cây đồng hồ 273
Trong phần đầu 273
RC Oscillators 274
Crystal Oscillators 275
Dao động điện 276
Đồng hồ thời gian thực 276
Đồng hồ giám sát 276
Đồng hồ hệ thống (SYSCLK) 277
SYSCLK và USB 279
AHB Bus 280
rcc_clock_setup_in_hse_8mhz_out_72mhz () 281
APB1 Thiết bị ngoại vi 285
Thiết bị ngoại vi APB2 285
Bộ hẹn giờ 285
rcc_set_mco () 286
HSI Demo 286
HSE demo 288
Bản demo PLL ÷ 2 289
Tóm tắt 290
Thư mục 290
Chương 16: PWM với Timer 2 293
Tín hiệu PWM 293
Timer 2 294
PWM Loop 298
Tính thời gian hẹn giờ 298
Chu kỳ 30Hz 299
Servo Hookup 300
Chạy Demo 301
PWM trên PB3 301
Thời gian khác 302
Kênh PWM khác 303
Tóm tắt 304
Thư mục 304
Chương 17: Đầu vào PWM với bộ đếm thời gian 4 305
Tín hiệu Servo 305
Tín hiệu điện áp 306
Demo Dự án 306
Cấu hình GPIO 306
Cấu hình hẹn giờ 4 306
Vòng Task1 308
Quy tắc ISR 309
Chạy demo 310
Kết quả đầu ra 312
Đầu vào bộ hẹn giờ 313
Tóm tắt 315
Chương 18: CAN Bus 317
CAN Bus 317
Tín hiệu khác nhau 319
Chủ yếu / Ngắt 320
Phân biệt bus 321
Đồng bộ hóa 322
Định dạng tin nhắn 323
Giới hạn STM32 324
Demo 325
Xây dựng Phần mềm 325
Giao diện UART 326
MCU nhấp nháy 326
Demo Bus 327
Phiên chạy 328
Tin nhắn CAN 330
Đồng bộ 331
Tóm tắt 331
Thư mục 331
Chương 19: Phần mềm CAN Bus 333
Khởi tạo 333
can_init () 336
CAN Nhận Bộ lọc 338
CAN Nhận Ngắt 339
Ứng dụng Nhận 343
Gửi tin nhắn CAN 345
Tóm tắt 346
Chương 20: Dự án mới 347
Tạo dự án 347
Makefile 348
Bao gồm Makefiles 351
Phụ thuộc tiêu đề 351
Tùy chọn biên dịch 351
Flash 128k 352
FreeRTOS 353
rtos / opencm3c 353
rtos / heap_4c 354
Mô-đun bắt buộc 354
FreeRTOSConfigh 355
Thư viện người dùng 357
Những sai sót trong Rookie 358
Tóm tắt 358
Thư mục 358
Chương 21: Xử lý sự cố 361
Gnu GDB 361
GDB Server 361
GDB từ xa 363
Giao diện người dùng văn bản GDB 366
Ngoại vi GPIO Trouble 367
Hàm thay thế lỗi 368
Lỗi ngoại vi 369
ISR FreeRTOS Crash 369
Ngăn xếp Overflow 370
Ước tính kích thước ngăn xếp 371
Khi một trình gỡ lỗi không hoạt động 371
Đẩy / kéo hoặc mở cống 372
Thiết bị 372
libopencm3 373
Ưu tiên nhiệm vụ FreeRTOS 375
Lập kế hoạch Trong libopencm3 376
Tóm tắt 377
Phụ lục A: Các câu trả lời cho các bài tập 379
Chương 4 379
Chương 5 381
Chương 6 382
Chương 7 383
Chương 8 384
Chương 9 385
Chương 10 386
Chương 11 386
Chương 12 387
Chương 13 388
Chương 14 389
Chương 15 390
Chương 16 390
Chương 17 391
Chương 19 391
Chương 20 392
Chương 1: GIỚI THIỆU
Các thiết bị ARM Cortex được quan tâm nhiều hiện nay bởi vì các thiết bị ARM
được tìm thấy ở mọi nơi. Các sản phẩm chứa các thiết bị ARM có thiết kế từ các hệ
thống nhúng vi điều khiển nhỏ đến điện thoại di động và các máy chủ lớn hơn chạy
Linux. ARM cũng có mặt ở những thiết bị cao hơn trong trung tâm dữ liệu. Đây là
tất cả những lý do nên làm quen với công nghệ ARM.
Với những công nghệ khác nhau, từ vi điều khiển đến máy chủ, câu hỏi phát sinh:
"Tại sao cần phải nghiên cứu lập trình thiết bị nhúng? Tại sao không tập trung vào
các hệ thống người dùng chạy Linux, giống như Raspberry Pi?”
Câu trả lời đơn giản là các hệ thống nhúng hoạt động tốt trong các tình huống khó
xử lý cho các hệ thống lớn hơn. Chúng thường được sử dụng trong thế giới thực.
Ví dụ, chúng giao tiếp giữa thế giới thực và hệ thống máy tính để bàn. Bàn phím sử
dụng MCU chuyên dụng (bộ vi điều khiển) để quét các công tắc chính của bàn
phím và báo cáo công việc nhấn phím vào hệ thống máy tính để bàn. Điều này
không chỉ làm giảm số lượng dây cần thiết mà còn giải phóng CPU chính khỏi việc
tính toán hiệu suất cao của nó với nhiệm vụ đơn giản để thông báo việc nhấn phím.
Các ứng dụng khác bao gồm các hệ thống nhúng trong các nhà máy để theo dõi
nhiệt độ, bảo mật và phát hiện cháy. Các hệ thống nhúng độc lập tiết kiệm tiền và
khởi động ngay lập tức. Cuối cùng, kích thước nhỏ của MCU làm cho nó trở thành
sự lựa chọn tốt nhất trong các máy bay không người lái, nơi khối lượng là yếu tố
quan trọng.
Sự phát triển của các hệ thống nhúng theo truyền thống yêu cầu nguồn lực từ hai
ngành:
• Kỹ sư phần cứng
• Người phát triển phần mềm
Thông thường, một người được giao nhiệm vụ hoàn thảnh sản phẩm cuối cùng. Kỹ
sư phần cứng chuyên thiết kế các mạch điện tử liên quan, nhưng bước cuối cùng
sản phẩm yêu cầu phần mềm. Điều này có thể là một thách thức bởi vì người viết
phần mềm thường thiếu hiểu biết về điện tử trong khi các kỹ sư thường thiếu
chuyên môn về phần mềm. Để tiết kiệm chi phí và thời gian, kỹ sư điện tử thường
kim luôn kỹ sư phần mềm.
Không có gì bất lợi khi một người thực hiện cả hai chuyên ngành miễn là có các kỹ
năng cần thiết. Đó là nội dung cuốn sách này muốn thực hiện.
STM32F103C8T6
Thiết bị được sử dụng trong cuốn sách này là STMicroelectronics
STM32F103C8T6. Thiết bị này gồm nhiều phần, vì vậy cần chia nhỏ nó:
• STM32 (nền tảng STMicroelectronics)
• F1 (gia đình thiết bị)
• 03 (phân khu của họ thiết bị)
• C8T6 (hiển thị ảnh hưởng đến số lượng SRAM, bộ nhớ flash, …)
Các thiết bị này sử dụng đường dẫn 32-bit và mạnh hơn đáng kể so với các thiết bị
8-bit.
F103 là một nhánh (F1 + 03) của thiết bị STM32. Phần này quyết định CPU và khả
năng ngoại vi của thiết bị.
Cuối cùng, C8T6 xác định thêm khả năng của thiết bị, như dung lượng bộ nhớ và
tốc độ xung.
Thiết bị STM32F103C8T6 đã được chọn sử dụng trong cuốn sách này vì những
yếu tố sau:
• Chi phí thấp (~2 USD trên eBay)
• Tính thông dụng (eBay, Amazon, AliExpress, …)
• Khả năng nâng cao
• Thiết kế
STM32F103C8T6 có chi phí thấp cho sinh viên và người yêu thích nó để khám
phá thiết bị ARM Cortex-M3. Thiết bị này có sẵn và cực kỳ tiềm năng. Cuối cùng,
thiết kế của PCB nhỏ cho phép hàn chân vào các cạnh và cắm vào breadboard.
Breadboard là board thuận tiện nhất để thực hiện các thí nghiệm.
MCU trên PCB (Hình 1-1) được gọi là "Blue Pill", lấy cảm hứng từ bộ phim The
Matrix. Có một số PCB cũ hơn có màu đỏ và được gọi là "Red Pill". Vẫn còn
những loại khác, màu đen được gọi là "Black Pill". Trong cuốn sách này, sử dụng
Blue Pill.
Hình 1-1. STM32F103C8T6 PCB với các chân đề hàn, thường được gọi là "Blue
Pill"
Chi phí thấp có một lợi thế khác - nó cho phép sở hữu một số thiết bị cho các dự án
liên quan đến truyền thông CAN, ví dụ cuốn sách này khám phá truyền thông CAN
bằng cách sử dụng ba thiết bị được kết nối bằng một bus thông thường.
Sự hỗ trợ của thiết bị ngoại vi của STM32F103 bao gồm:
• Cổng GPIO 4 x 16 bit (hầu hết là dung sai 5 volt)
• 3 x USART (Bộ thu / phát đồng bộ / không đồng bộ chung)
• 2 x bộ điều khiển I2C
• 2 x bộ điều khiển SPI
• 2 x ADC (Bộ chuyển đổi số tương tự)
• 2 x DMA (bộ điều khiển địa chỉ bộ nhớ trực tiếp)
• 4 x đồng hồ
• xem giờ cặp
• 1 x bộ điều khiển USB
• 1x bộ điều khiển CAN
• 1 x máy phát điện CRC
• RAM tĩnh 20K
• Thẻ nhớ FLASH 64K (hoặc 128K)
• CPU ARM Cortex M3, xung tối đa 72 MHz
Tuy nhiên, có một số hạn chế. Ví dụ, bộ điều khiển USB và CAN không thể hoạt
động cùng một lúc. Các thiết bị ngoại vi khác có thể khác với các chân I / O được
sử dụng. Hầu hết sự khác nhau giũa các chân được quản lý thông qua cấu hình
AFIO (Đầu ra chức năng thay thế), cho phép các chân khác nhau được sử dụng cho
chức năng của thiết bị ngoại vi.
Trong cấu hình ngoại vi, một số xung riêng biệt có thể được bật riêng để điều
chỉnh mức sử dụng năng lượng. Khả năng tiên tiến của MCU làm cho nó phù hợp
để nghiên cứu.
Thẻ nhớ flash được sử dụng ở 64K byte, nhưng có thể thấy rằng nó hỗ trợ 128K.
Điều này được đề cập trong Chương 2 và cho phép các ứng dụng tốt được tận dụng
vào thiết bị.
FreeRTOS
Không giống như dòng chip AVR phổ biến (hiện thuộc sở hữu của Microchip), gia
đình STM32F103 có đủ SRAM (RAM tĩnh) để chạy thoải mái FreeRTOS
(freertos.org). Có quyền truy cập vào một RTOS (hệ điều hành thời gian thực)
cung cấp một số lợi thế, bao gồm
• Đa nhiệm ưu tiên;
• Hàng đợi;
• Mutexes và semaphores; và
• phần mềm hẹn giờ.
Lợi thế đặc biệt là khả năng đa nhiệm. Nó giúp giảm bớt đáng kể gánh nặng của
thiết kế phần mềm. Nhiều dự án Arduino tiên tiến được nạp liệu bởi việc sử dụng
các máy chủ với một mô hình vòng lặp sự kiện. Mỗi lần thông qua vòng lặp, phần
mềm phải thăm dò ý kiến cho dù một sự kiện đã xảy ra và xác định thời gian cho
một số hành động. Điều này làm cho quản lý các biến trạng thái trở nên phức tạp
và dẫn đến lỗi lập trình. Ngược lại, đa nhiệm ưu tiên cung cấp các nhiệm vụ điều
khiển riêng biệt, thực hiện rõ ràng chức năng độc lập của chúng. Đây là một dạng
trừu tượng của phần mềm đã được chứng minh.
FreeRTOS cung cấp đa nhiệm ưu tiên, tự động chia sẻ thời gian CPU giữa các tác
vụ được định cấu hình. Tuy nhiên, các nhiệm vụ độc lập làm thêm một số nhiệm
vụ cho việc tương tác một cách an toàn giữa chúng. Đây là lý do tại sao FreeRTOS
cũng cung cấp hàng đợi tin nhắn, semaphores, mutexes và nhiều thứ khác để quản
lý an toàn.
libopencm3
Phát triển code cho các ứng dụng MCU có thể được yêu cầu. Một phần của yêu
cầu này đang phát triển với “bare metal” của thiết bị này. Điều này bao gồm tất cả
các thanh ghi ngoại vi chuyên dụng và địa chỉ của chúng. Ngoài ra, nhiều thiết bị
ngoại vi yêu cầu một "điệu nhảy" nhất định để khiến chúng sẵn sàng để sử dụng.
Đây là trang chủ của libopencm3 (libopencm3.org). Nó không chỉ xác định địa chỉ
bộ nhớ cho các địa chỉ đăng ký ngoại vi, mà nó còn định nghĩa các macro cho các
hằng số đặc biệt cần thiết. Cuối cùng, thư viện bao gồm các hàm C đã được kiểm
tra để tương tác với các thiết bị phần cứng ngoại vi.
Không có Arduino
Không có code Arduino nào được trình bày trong cuốn sách này. Arduino phục vụ
mục đích của nó khá tốt, cho phép học sinh nghiên cứu thế giới MCU mà không
cần biết trước. Cuốn sách này nhắm đến mục tiêu xa hơn môi trường Arduino bằng
cách sử dụng một chế độ chuyên nghiệp phát triển độc lập với các công cụ
Arduino.
Nếu không có Arduino, không có "cổng kỹ thuật số 10." Thay vào đó, làm việc
trực tiếp với một cổng MCU và tùy chọn một chân. Ví dụ, thiết bị Blue Pill được
sử dụng trong cuốn sách này có đèn LED tích hợp trên cổng C, là chân 13. Hoạt
động trực tiếp với các cổng cho phép hoạt động I / O với tất cả 16 chân cùng một
lúc khi cần.
Không có IDE
Có một số môi trường IDE dựa trên hệ điều đành Windows có sẵn nhưng IDE thay
đổi các thư viện liên quan của chúng theo thời gian. Lợi thế của IDE đã cho thường
bị loại bỏ khi IDE và hệ điều hành nó chạy khi thay đổi.
Cuốn sách này phát triển các dự án dựa trên các công cụ và thư viện nguồn mở sau:
• gcc / g ++ (bộ sưu tập trình biên dịch GNU: nguồn mở)
• tạo (GNU binutils: open sourced)
• libopencm3 (thư viện: nguồn mở)
• FreeRTOS (thư viện: mã nguồn mở và miễn phí cho mục đích thương mại)
Với thiết bị này, các dự án trong cuốn sách này sẽ vẫn có thể sử dụng được lâu sau
khi mua cuốn sách này. Hơn nữa, nó cho phép người dùng Linux, FreeBSD và
MacOS — ngoài những người sử dụng nền tảng Windows — để sử dụng cuốn
sách này. Nếu sử dụng Windows, có thể tải xuống và cài đặt môi trường Cygwin
(www.cygwin.com) vì môi trường giống như Linux được giả thiết cho dự án xây
dựng bản demo.
Tất cả các dự án được trình bày sử dụng GNU (GNU không phải là Unix) đều tạo
ra tiện ích, cung cấp một số hàm được xây dựng với thời gian tối thiểu. Nếu các
bản được cung cấp trong cuốn sách này có lỗi, thì hãy đảm bảo sử dụng lệnh tạo
GNU, đặc biệt là trên FreeBSD. Một số hệ thống cài đặt GNU làm gmake.
Framework Phát triển
Mặc dù gcc, libopencm3 và FreeRTOS có thể hoạt động cùng nhau, nhưng nó đòi
hỏi sự cân sức của cấu tạo và chế độ làm việc.
Thay vì làm công việc tẻ nhạt này, có một framework phát triển có sẵn miễn phí từ
github.com để tải xuống. Framework này tích hợp libopencm3 với FreeRTOS.
Cũng được cung cấp để tạo các tệp cần thiết để xây dựng toàn bộ chuỗi dự án cùng
một lúc hoặc từng dự án riêng lẻ. Cuối cùng, có một số thư viện nguồn mở có thể
rút ngắn thời gian phát triển của các ứng dụng mới. Framework này có thể tải
xuống tại github.com hoặc tải xuống code riêng của cuốn sách.
Giả định
Cuốn sách này dành cho những ai muốn vượt ra ngoài kinh nghiệm Arduino. Nó
dành cho những ai yêu thích, nhà sản xuất và kỹ sư. Các phần mềm được phát triển
trong cuốn sách này sử dụng ngôn ngữ lập trình C, vì vậy nếu đã biết cách lập trình
C thì sẽ tốt hơn. Tương tự như vậy, một số kiến thức điện tử kỹ thuật số cơ bản
được giả định là liên quan đến các giao diện ngoại vi do thiết bị cung cấp.
Thiết bị STM32 có thể là một thách thức để cấu hình và vận hành chính xác. Phần
lớn thách thức này là kết quả của cấu hình tệ của các thiết bị ngoại vi. Mỗi thiết bị
phụ thuộc vào một xung, phải được kích hoạt và ước lượng được cấu hình. Một số
thiết bị bị ảnh hưởng bởi cấu hình xung ngược. Cuối cùng, mỗi thiết bị ngoại vi
phải được kích hoạt và được cấu hình để sử dụng.
Những người yêu thích và nhà sản xuất không cần phải tìm các cuốn sách khó để
đọc. Ngay cả khi bị thách thức, nó vẫn có thể xây dựng và chạy từng thí nghiệm
của dự án. Khi kiến thức và sự tự tin được xây dựng, mỗi người đọc có thể phát
triển các chủ đề được đề cập. Lời khuyên là tất cả độc giả nên sáng tạo các dự án
được trình bày và chạy thử nghiệm thêm. Framework được cung cấp cũng sẽ cho
phép tạo các dự án mới với nỗ lực tối thiểu.
Những thứ cần thiết
Có một số thiết bị cần sử dụng trong các dự án của cuốn sách. Số một trong danh
sách là thiết bị Blue Pill (xem Hình 1-1). Nên mua loại có các chân đề hàn vào
PCB để dễ dàng sử dụng thiết bị trên breadboard.
Chương 18–19 sử dụng ba thiết bị Blue Pill giao tiếp với nhau qua một bus CAN.
Nếu muốn thực hiện các thí nghiệm đó, hãy đảm bảo có được ít nhất ba thiết bị.
Thiết bị lập trình ST-Link V2
Thiết bị thiết yếu tiếp theo là bộ điều hợp lập trình, cần mua loại “V2”.
Hầu hết các loại linh liện sẽ bao gồm bốn dây có thể tháo rời để kết nối thiết bị với
thiết bị STM32. Hình 1-2 minh họa lập trình USB, có thể sử dụng được từ
Windows, Raspberry Pi, Linux, MacOS và FreeBSD.
Hình 1-2. Bộ lập trình và cáp ST-Link V2
Thiết bị STM32F103C8T6 có thể được lập trình theo nhiều cách, nhưng cuốn sách
này sẽ chỉ sử dụng trình lập trình USB ST-Link V2. Nó giúp đơn giản hóa mọi thứ
khi thực hiện phát triển dự án và cho phép gỡ lỗi từ xa.
Breadboard
Một breadboard là cần thiết để làm thí nghiệm. Nhiều dự án trong cuốn sách này
nhỏ cần không gian cho một thiết bị Blue Pill và một số đèn LED hoặc chip. Tuy
nhiên, các thí nghiệm khác, như thí nghiệm trong Chương 18–19, sử dụng ba thiết
bị giao tiếp với nhau qua một bus CAN.
Cần có một breadboard đủ chỗ cắm bốn thiết bị. Ngoài ra, có thể mua bốn
breadboard nhỏ, mặc dù điều này ít thuận tiện hơn.
Hình 1-3 minh họa breadboard sử dụng trong cuốn sách này. Nó không phải đủ
lớn, nhưng có các đường nối điện ở đầu và cuối mỗi dải. Các đường này được
khuyến khích, vì nó giúp giảm bớt hệ thống dây điện.
Hình 1-3. Một breadboard với các đường nối được cung cấp
Dây điện DuPont
Nhiều người dùng không để ý nhiều về hệ thống dây điện của breadboard, nhưng
dây DuPont có thể tạo ra một sự khác biệt rất lớn. Có thể tự cắt và tuốt dây nhưng
nó bất tiện và mất thời gian. Sẽ thuận tiện hơn khi có sẵn một hộp dây điện. Hình
1-4 minh họa một số dây dẫn DuPont.
Hình 1-4. Dây điện DuPont
Tụ Bypass 0,1 uF
Có một số dự án trong cuốn sách cần sử dụng tụ điện. Hình 1-5 chứa tụ Bypass
0,1uF là linh kiện có màu vàng trong hình.
Hình 1-5. Breadboard với STM32F103C8T6 và tụ Bypass 0,1uF được cắm trên các
đường nối.
Bộ chuyển đổi USB TTL
Thiết bị này rất cần thiết cho một số dự án trong cuốn sách này. Hình 1-6 minh họa
một loại của thiết bị này. Bộ chuyển đổi này được sử dụng để truyền dữ liệu đến
máy tính để bàn / máy tính xách tay. Nếu không có màn hình hiển thị, nó cho phép
giao tiếp thông qua một liên kết nối tiếp ảo (qua USB) đến một chương trình điểm
mút.
Hình 1-6. Cáp chuyển đổi USB (TTL)
Đây là thiết bị 5V thông thường và tương thích TTL. Tuy nhiên, lưu ý rằng một
trong những tính năng của dòng thiết bị STM32F103 là nhiều chân GPIO có dung
sai 5 volt, mặc dù MCU hoạt động với nguồn + 3,3 volt. Điều này cho phép sử
dụng các bộ chuyển tiếp TTL này mà không gây hại. Các thiết bị cần thiết khác có
thể hoạt động với nguồn 3,3-volt hoặc có thể chuyển đổi giữa 5 và 3,3 volt.
Bộ nguồn
Hầu hết các dự án được trình bày chỉ hoạt động tốt với đầu ra nguồn của bộ chuyển
đổi USB hoặc TTL. Nhưng có một số dự án có thể cần một bộ đổi nguồn. Hình 1-7
minh họa một bộ biến đổi tốt để cung cấp điện cho breadboard.
Hình 1-7. Một nguồn cung cấp điện breadboard và bộ chuyển đổi 7.5 VDC
MB102 khá thuận tiện vì nó có thể chuyển đổi để cung cấp điện 3,3 volt hoặc 5
volt. Ngoài ra, nó bao gồm nút bật / tắt nguồn.
Bộ chuyển đổi thường để cung cấp nguồn điện đầu vào. Trong khi MB102 cấp
nguồn lên đến 12 volt đầu vào, hầu hết 9 bộ chuyển đổi VDC có điện áp mạch mở
gần 13 vôn hoặc nhiều hơn.
Bộ sạc điện thoại Ericsson cũ sử dụng 7,5 VDC ở 600 mA. Nó đo một điện áp
không tải ở 7.940 volt. Nó gần với các đầu ra 5 và 3,3 volt hơn MB102 sẽ điều
chỉnh.
Các linh kiện nhỏ
Các linh kiện nhỏ cần phải có là đèn LED và điện trở để sử dụng cho các dự án.
Hình 1-8 cho thấy các đèn LED và một điện trở SIP-9.
Hình 1-8. Bộ đèn LED 5 mm và một điện trở SIP-9 ở phía dưới
Thông thường một đèn LED sử dụng dòng điện khoảng 10 mA cho độ sáng bình
thường. Đèn LED nhỏ hơn chỉ cần dòng điện từ 2 đến 5 mA. Với điện áp cung cấp
gần 3,3 volt, vì vậy cần có điện trở khoảng 220 Ω để giới hạn dòng điện (220 ohms
giới hạn dòng điện đến mức tối đa khoảng 7 mA).
Một loại điện trở khác đó là điện trở SIP-9. Hình 1-9 minh họa sơ đồ bên trong cho
điện trở này. Ví dụ, nếu làm sáng tám đèn LED, cần có tám điện trở đơn cho mỗi
LED, cần được nối dây và chiếm nhiều không gian breadboard. Nhưng nếu sử
dụng điện trở SIP-9 có kết nối chung cả tám điện trở thì sẽ tiện hơn, tiết kiệm dây
điện và giảm sai sót trong quá trình nối dây.
Hình 1-9. Sơ đồ bên trong của điện trở SIP-9
Tóm lược
Chương này đã giới thiệu các thiết bị chính sẽ xuất hiện trong cuốn sách này.
Chương 2: sẽ hướng dẫn các bước cài đặt phần mềm cần thiết. Khi đã thực hiện
qua các bước đơn giản, nhàm chán nhưng cần thiết thì làm các dự án sẽ de74 dàng
hơn.
Chương 3: Chương này cung cấp thông tin quan trọng về các tùy chọn cấp nguồn.
Hướng dẫn các tùy chọn quyền truy cập và sau đó áp dụng trình lập trình ST-Link
V2 để thăm dò thiết bị.
Chương 4: Thực hiện tiện ích st-flash và lập trình thiết bị bằng chương trình liên
kết nhỏ, một chương trình Flash khác với chương trình được cung cấp cùng với
thiết bị. Thú vị hơn, API GPOP libopencm3 sẽ được thảo luận và chương trình liên
kết nhỏ sẽ được kiểm tra chi tiết. Điều này giải thích cấu hình GPIO và hoạt động
của nó.
Chương 5: Chương trình Flash sẽ chạy dưới FreeRTOS như một nhiệm vụ. Cách
cấu hình tốc độ xung nhịp CPU sao cho không cần cấp một xung RC mặc định.
Một chức năng móc tùy chọn để giải quyết sự kiện tràn ngăn xếp được minh họa.
Cấu hình và quy ước của FreeRTOS đã được đề cập đến.
Chương 6: Chương này sẽ trình bày công thức chung cho việc cấu hình và kích
hoạt USART ở chế độ không đồng bộ. Điều này cho phép Blue Pill gửi dữ liệu đến
máy tính để bàn để gỡ lỗi hoặc bất kỳ báo cáo nào khác.
Đồng thời thể hiện các nhiệm vụ FreeRTOS và hàng đợi tin nhắn được cung cấp.
Cách tiếp cận này chia các bên gửi và nhận của ứng dụng thành nhiệm vụ riêng của
chúng.
Chương 7: Chương này hướng dẫn cách một giao diện USB được xây dựng giữa
STM32 và máy tính xách tay / PC. Bản demo nhấn mạnh một số cơ sở FreeRTOS,
như nhiệm vụ và hàng đợi tin nhắn. Có các nhiệm vụ thực thi riêng và truyền thông
liên công việc an toàn giúp đơn giản hóa việc phát triển ứng dụng.
Chương 8: Giao thức SPI và cách áp dụng nó trên STM32 trong FreeRTOS bằng
cách sử dụng libopencm3.
Chương 9: Chương này giới thiệu tính năng tải lên Intel Hex để code chương trình.
Chương 10: Chương này khám phá cấu hình và sử dụng đồng hồ thời gian thực.
Cách thiết lập EXTI17 cho phép thiết lập thay đổi tín hiệu GPIO ngắt.
Chương 11: Chương này giúp chuẩn bị tốt cho làm việc I2C.
Chương 12: Trong chương này, SPI được áp dụng cho vấn đề thực tế của việc điều
khiển một màn hình OLED. Khái niệm về AFIO cho gia đình STM32 cũng được
áp dụng trong chương này chứng minh làm thế nào SPI1 có thể có chân I / O của
nó chuyển đến chân khác nhau.
Chương 13: Chương này được xây dựng dựa trên phần mềm được phát triển trong
Chương 12, thêm bộ điều khiển DMA để quản lý việc truyền dữ liệu đến thiết bị
OLED.
Chương 14: Chương này cung cấp môi trường đơn giản để bắt đầu sử dụng ADC.
Chương 15: Trong chương này, tổng quan về hệ thống cây đồng hồ đã được trình
bày, bắt đầu bằng nguồn đồng hồ chính: HSI và HSE cho đồng hồ hệ thống và
HSE, LSE và LSI cho thời gian thực đồng hồ. Đồng hồ LSI cũng được sử dụng bởi
bộ đếm thời gian watchdog.
Chương 16: Chương này áp dụng bộ đếm thời gian phần cứng cho nhiệm vụ tạo
đầu ra tín hiệu PWM thích hợp cho việc điều khiển động cơ servo RC. Ưu điểm
của việc sử dụng bộ đếm thời gian phần cứng là ít hoặc không hỗ trợ phần mềm
khi nó được cấu hình để chạy, để thay đổi độ rộng xung hoặc chu kỳ của một bản
cập nhật nhỏ cho bộ hẹn giờ. Đồng hồ phần cứng cũng cung cấp độ chính xác cao
hơn vì chúng không bị chậm trễ phần mềm.
Chương 17: Chương này sẽ trình bày cách bộ đếm thời gian STM32 được sử dụng
để đo độ rộng xung và khoảng thời gian của tín hiệu một cách dễ dàng.
Chương 18: Khi đèn tín hiệu nhấp nháy, mắt người nhìn thấy chúng gần như là liên
tục chứ không phải là nhấp nhấy. Vậy chúng được được làm bằng cách nào? Và
điều gì xảy ra nếu cần độ chính xác cao hơn cho ứng dụng điều khiển nhà máy?
Chương này sẽ trình bày chi tiết hai câu hỏi trên.
Chương 19: Chương này sẽ trình bày một số cách viết code C đơn giản bằng cách
đặt API ứng dụng CAN bus trong mô-đun canmsgs.c và canmsgs.h, nhiệm vụ viết
ứng dụng trở nên dễ dàng hơn. Và một số ứng dụng của CAN BUS.
Chương 20: Chương này sẽ chuẩn bị để tạo các dự án STM32 tự thực hiện bằng
cách sử dụng FreeRTOS.
Chương 21: Chương này trình bày các thiết bị thành viên khác có các thiết bị ngoại
vi bổ sung trong gia đình STM32, như DAC (bộ chuyển đổi digitalto-analog), để
đặt tên một thiết bị, một thiết bị trong gia đình STM32F407, Core407V, STM32F4.

More Related Content

What's hot

Thiet ke lan_wan
Thiet ke lan_wanThiet ke lan_wan
Thiet ke lan_wanGió Lào
 
E-book Wordpress
E-book WordpressE-book Wordpress
E-book WordpressHOSTVN
 
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...Viết thuê báo cáo thực tập giá rẻ
 
Sach s7 200_tap_1_1316
Sach s7 200_tap_1_1316Sach s7 200_tap_1_1316
Sach s7 200_tap_1_1316minhpv32
 
Bài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTUBài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTUNgô Doãn Tình
 
Ccna căn bản bach khoa aptech
Ccna căn bản  bach khoa aptechCcna căn bản  bach khoa aptech
Ccna căn bản bach khoa aptechCamQueVuong
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Thien Ta
 
127918321 nghien-cuu-ma-turbo
127918321 nghien-cuu-ma-turbo127918321 nghien-cuu-ma-turbo
127918321 nghien-cuu-ma-turboHieu Tran
 
Huong dan su_dung_nuke_viet_3_2_full
Huong dan su_dung_nuke_viet_3_2_fullHuong dan su_dung_nuke_viet_3_2_full
Huong dan su_dung_nuke_viet_3_2_fullHoang Ty
 
hệ thống điện ô tô.docx
hệ thống điện ô tô.docxhệ thống điện ô tô.docx
hệ thống điện ô tô.docxlvnthnh20
 

What's hot (19)

Luận văn: Vận hành, quản lý, giám sát hệ thống BTS Viettel, HAY
Luận văn: Vận hành, quản lý, giám sát hệ thống BTS Viettel, HAYLuận văn: Vận hành, quản lý, giám sát hệ thống BTS Viettel, HAY
Luận văn: Vận hành, quản lý, giám sát hệ thống BTS Viettel, HAY
 
Gia công bộ chuyển đổi điện dùng trong năng lượng mặt trời, 9đ
Gia công bộ chuyển đổi điện dùng trong năng lượng mặt trời, 9đGia công bộ chuyển đổi điện dùng trong năng lượng mặt trời, 9đ
Gia công bộ chuyển đổi điện dùng trong năng lượng mặt trời, 9đ
 
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chipĐề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
 
Thiet ke lan_wan
Thiet ke lan_wanThiet ke lan_wan
Thiet ke lan_wan
 
E-book Wordpress
E-book WordpressE-book Wordpress
E-book Wordpress
 
Luận văn: Nghiên cứu thiết kế bộ điều khiển PID mờ, HOT
Luận văn: Nghiên cứu thiết kế bộ điều khiển PID mờ, HOTLuận văn: Nghiên cứu thiết kế bộ điều khiển PID mờ, HOT
Luận văn: Nghiên cứu thiết kế bộ điều khiển PID mờ, HOT
 
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...
Đồ án điện tử viễn thông Giải pháp truyền tải IP trên quang cho mạng viễn thô...
 
Sach s7 200_tap_1_1316
Sach s7 200_tap_1_1316Sach s7 200_tap_1_1316
Sach s7 200_tap_1_1316
 
Bài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTUBài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTU
 
Ccna căn bản bach khoa aptech
Ccna căn bản  bach khoa aptechCcna căn bản  bach khoa aptech
Ccna căn bản bach khoa aptech
 
Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)Bat dau voi Raspberry Pi (demo)
Bat dau voi Raspberry Pi (demo)
 
127918321 nghien-cuu-ma-turbo
127918321 nghien-cuu-ma-turbo127918321 nghien-cuu-ma-turbo
127918321 nghien-cuu-ma-turbo
 
Luận văn: Xử lý ảnh video theo thời gian thực trên kit STM32, 9đ
Luận văn: Xử lý ảnh video theo thời gian thực trên kit STM32, 9đLuận văn: Xử lý ảnh video theo thời gian thực trên kit STM32, 9đ
Luận văn: Xử lý ảnh video theo thời gian thực trên kit STM32, 9đ
 
Xuat+mach+in+tu+mach+nguyen+li
Xuat+mach+in+tu+mach+nguyen+liXuat+mach+in+tu+mach+nguyen+li
Xuat+mach+in+tu+mach+nguyen+li
 
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOTĐề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
Đề tài: Nghiên cứu ứng dụng lập trình điều khiển động cơ, HOT
 
Laptrinhplc
LaptrinhplcLaptrinhplc
Laptrinhplc
 
Huong dan su_dung_nuke_viet_3_2_full
Huong dan su_dung_nuke_viet_3_2_fullHuong dan su_dung_nuke_viet_3_2_full
Huong dan su_dung_nuke_viet_3_2_full
 
hệ thống điện ô tô.docx
hệ thống điện ô tô.docxhệ thống điện ô tô.docx
hệ thống điện ô tô.docx
 
Tài liệu CCNA - Lưu hành nội bộ
Tài liệu CCNA  - Lưu hành nội bộTài liệu CCNA  - Lưu hành nội bộ
Tài liệu CCNA - Lưu hành nội bộ
 

Similar to Bat dau voi stm32 (demo)

Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfMan_Ebook
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishiddungd4
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishiquanglocbp
 
Hướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comHướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comThùy Linh
 
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Vuong Nguyen
 
Tài liệu lập trình plc s7 200 full-01_2011_v1
Tài liệu lập trình plc s7 200 full-01_2011_v1Tài liệu lập trình plc s7 200 full-01_2011_v1
Tài liệu lập trình plc s7 200 full-01_2011_v1quanglocbp
 
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...KhoTi1
 
Cong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plcCong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plctienle176
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avranhhoi12345
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vnbibibobo2007
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051chilacaiten
 
Vi Điều Khiển Ứng Dụng AT89s52
Vi Điều Khiển Ứng Dụng AT89s52Vi Điều Khiển Ứng Dụng AT89s52
Vi Điều Khiển Ứng Dụng AT89s52Mr Giap
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfNuioKila
 
Bao cao tom tat nckh2015
Bao cao tom tat nckh2015Bao cao tom tat nckh2015
Bao cao tom tat nckh2015New Way
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picCu Bi
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfMan_Ebook
 

Similar to Bat dau voi stm32 (demo) (20)

Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdfTài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
Tài liệu tham khảo lập trình PLC Mitsubishi dòng IQ-R.pdf
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishi
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishi
 
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOTĐề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
 
Hướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.comHướng dẫn làm quen với stm8 f103 - tincanban.com
Hướng dẫn làm quen với stm8 f103 - tincanban.com
 
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
 
Tài liệu lập trình plc s7 200 full-01_2011_v1
Tài liệu lập trình plc s7 200 full-01_2011_v1Tài liệu lập trình plc s7 200 full-01_2011_v1
Tài liệu lập trình plc s7 200 full-01_2011_v1
 
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
LUẬN VĂN THIẾT KẾ HỆ THỐNG NHÚNG VỚI VI ĐIỀU KHIỂN LÕI MỀM VÀ HỆ ĐIỀU HÀNH TR...
 
Nhóm-HM.docx
Nhóm-HM.docxNhóm-HM.docx
Nhóm-HM.docx
 
Cong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plcCong nghe tram_tron_be_tong_dung_plc
Cong nghe tram_tron_be_tong_dung_plc
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avr
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vn
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
 
Vdk 8051
Vdk 8051 Vdk 8051
Vdk 8051
 
Vi Điều Khiển Ứng Dụng AT89s52
Vi Điều Khiển Ứng Dụng AT89s52Vi Điều Khiển Ứng Dụng AT89s52
Vi Điều Khiển Ứng Dụng AT89s52
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
 
Bao cao tom tat nckh2015
Bao cao tom tat nckh2015Bao cao tom tat nckh2015
Bao cao tom tat nckh2015
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-pic
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
 
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAYLuận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
 

Bat dau voi stm32 (demo)

  • 1. Mục lục Chương 1: Giới thiệu 1 STM32F103C8T6 2 FreeRTOS 5 libopencm3 5 Không có Arduino 6 Không có IDE 6 Mô hình phát triển 7 Giả thiết 7 Những thứ cần thiết 8 Thiết bị lập trình ST-Link V2 8 Breadboard 9 Dây điện (DuPont) 10 Tụ Bypass 0.1uF 11 Bộ chuyển tiếp USB TTL 12 Bộ nguồn 14 Linh kiện nhỏ 15 Tóm tắt 16 Chương 2: Cài đặt phần mềm 17 Quy ước thư mục được sử dụng 17 Phần mềm điều hành 17 Phần mềm sách 18 libopencm3 18 FreeRTOS 19 ~ / stm32f103c8t6 / rtos / Projectmk 19 Trình biên dịch ARM 20 Xây dựng phần mềm 23
  • 2. Công cụ ST-Link 24 Tóm tắt 25 Chương 3: Power Up và Blink 27 Nguồn 27 Điều chình +3.3V 29 Nguồn USB /+5V 30 Cung cấp +3.3V 30 Quy tắc nguồn điện 31 Ground 32 Reset 32 Showtime 32 ST-Link V2 34 Tiện ích st-flash 36 Đọc STM32 36 Viết ảnh 37 Xóa Flash 38 Tóm tắt 38 Thư mục 38 Chương 4: GPIO 39 Xây dựng miniblink 39 Flashing miniblink 40 Mã nguồn miniblinkc 41 GPIO API 44 Cấu hình GPIO 46 Một dãy ống 51 Đầu vào GPIO 51 Đầu ra kỹ thuật số, Đẩy / Kéo 52 Đầu ra kỹ thuật số, mở cống 53 Đặc điểm GPIO 53
  • 3. Ngưỡng điện áp đầu vào 55 Ngưỡng điện áp đầu ra 55 Lập trình delay 56 Vấn đề trong lập trình delay 57 Tóm tắt 58 Chương 5: FreeRTOS 59 Cơ sở FreeRTOS 59 Tasking 60 Hàng đợi tin nhắn 60 Semaphores và Mutexes 61 Timers 61 Nhóm sự kiện 62 Chương trình blinky2 62 Xây dựng và kiểm tra blinky2 66 Thi công 66 FreeRTOSConfigh 67 Cách đặt tên FreeRTOS 69 FreeRTOS Macro 70 Tóm tắt 71 Chương 6: USART 73 USART / UART Ngoại vi 73 Dữ liệu không đồng bộ 74 Bộ điều hợp nối tiếp USB 74 Hookup 76 Dự án uart 77 Project 81 Dự án uart2 85 USART API 90
  • 4. Chứa các tệp 92 Xung 92 Cấu hình 92 DMA 93 Ngắt 93 Đầu vào / đầu ra / trạng thái 93 Ducks-in-a-Row 93 FreeRTOS 94 Nhiệm vụ 94 Hàng đợi 95 Tóm tắt 96 Chương 7: USB nối tiếp 97 Blue Pill USB Số phát hành 97 Giới thiệu về USB 99 Ống và điểm cuối 99 Thiết bị nối tiếp USB 101 Thiết bị nối tiếp USB Linux 101 Thiết bị nối tiếp USB MacOS 102 Thiết bị nối tiếp USB Windows 103 USB GPIO 103 Mã nguồn trình diễn 104 cdcacm_set_config () 105 cdc_control_request () 106 cdcacm_data_rx_cb () 107 USB Task 108 USB nhận 110 Gửi USB 110 Bộ chuyển tiếp USB 111
  • 5. Tóm tắt 113 Thư mục 114 Chương 8: SPI Flash 115 Giới thiệu W25QXX 115 Giao diện ngoại vi nối tiếp Bus 115 Chip Chọn 117 Hệ thống dây điện và điện áp 117 Mạch SPI 118 Phần cứng / Kiểm soát NSS 118 Cấu hình SPM32 SPI 120 Tốc độ xung SPI 124 Chế độ xung SPI 125 Endianess và chiều dài byte 127 SPI I / O 128 Đọc SR1 128 Đang chờ sẵn sàng 129 Đọc ID nhà sản xuất 130 Viết flash 131 Xóa flash 133 Đọc Flash 136 Trình bày 137 Chạy bản trình diễn 139 ID nhà sản xuất 144 Power Down 144 Tóm tắt 145 Tài liệu tham khảo 145 Chương 9: Code Overlays 147 Kích thích liên kết 147
  • 6. BỘ NHỚ 149 Ghi chép 151 Section 151 CUNG CẤP 154 Tái sử dụng 154 Xác định Overlay 155 Code Overlay 157 Sơ đồ 159 Quản lý Overlay 159 VMA và tải địa chỉ 160 Biểu tượng liên kết trong code 161 Hàm quản lý Overlay 162 Sơ đồ Overlay 164 Trình bày 165 Trích dẫn Overlay 166 Tải Overlay lên W25Q32 167 Bản trình bày Overlay tiếp theo 171 Thay đổi code Trap 173 Tóm tắt 173 Thư mục 174 Chương 10: Đồng hồ thời gian thực (RTC) 175 Trình bày các dự án 175 Sử dụng cấu hình RTC 175 RTC gián đoạn 176 Ngắt và thiết lập 178 Quy trình dịch vụ ngắt 179 Thông báo tác vụ 181 Mutexes 183
  • 7. Trình bày 184 Kết nối UART1 187 Chạy Demo 188 rtc_alarm_isr () 190 Bộ điều khiển EXTI 190 Tóm tắt 192 Chương 11: I2C 195 Kênh I2C 195 Master và Slave 196 Bắt đầu và Dừng 196 Dữ liệu bit 197 Địa chỉ I2C 198 Giao dịch I2C 199 PCF8574 GPIO Extender 200 I2C Circuit 202 Dòng PCF8574 INT 203 Cấu hình PCF8574 203 Truyền động PCF8574 GPIO 205 Dạng sóng 206 Demo Mạch 206 Ngắt EXTI 207 Phần mềm I2C 209 Kiểm tra I2C 210 Bắt đầu I2C 211 I2C Viết 213 I2C Đọc 213 I2C Khởi động lại 214 Chương trình demo 215
  • 8. Phiên bản demo 218 Tóm tắt 220 Chương 12: OLED 223 Màn hình OLED 223 Cấu hình 224 Hiển thị kết nối 226 Tính năng hiển thị 226 Sơ đồ Demo 227 AFIO 228 Đồ họa 230 Pixmap 232 Pixmap Viết 233 Phần mềm đo lường 234 Mô-đun chính 236 Trình bày 238 Tóm tắt 240 Chương 13: OLED Sử dụng DMA 241 Kích thích 241 Mạch 242 Hoạt động DMA 242 Thi hành DMA 242 Trình bày 247 Khởi tạo DMA 249 Khởi chạy DMA 250 Nhiệm vụ quản lý SPI / DMA OLED 251DMA 251 Thủ tục DMA ISR 254 Khởi động lại DMA 255 Thi hành Demo 256
  • 9. Những thách thức khác 258 Tóm tắt 259 Chương 14: Chuyển đổi tương tự sang số 261 Tài nguyên STM32F103C8T6 261 Demo 262 Đầu vào tương tự PA0 và PA1 263 Cấu hình ngoại vi ADC 263 Chạy Demo 266 Đọc ADC 267 Điện áp tương tự 270 Tóm tắt 271 Thư mục 272 Chương 15: Cây đồng hồ 273 Trong phần đầu 273 RC Oscillators 274 Crystal Oscillators 275 Dao động điện 276 Đồng hồ thời gian thực 276 Đồng hồ giám sát 276 Đồng hồ hệ thống (SYSCLK) 277 SYSCLK và USB 279 AHB Bus 280 rcc_clock_setup_in_hse_8mhz_out_72mhz () 281 APB1 Thiết bị ngoại vi 285 Thiết bị ngoại vi APB2 285 Bộ hẹn giờ 285 rcc_set_mco () 286 HSI Demo 286
  • 10. HSE demo 288 Bản demo PLL ÷ 2 289 Tóm tắt 290 Thư mục 290 Chương 16: PWM với Timer 2 293 Tín hiệu PWM 293 Timer 2 294 PWM Loop 298 Tính thời gian hẹn giờ 298 Chu kỳ 30Hz 299 Servo Hookup 300 Chạy Demo 301 PWM trên PB3 301 Thời gian khác 302 Kênh PWM khác 303 Tóm tắt 304 Thư mục 304 Chương 17: Đầu vào PWM với bộ đếm thời gian 4 305 Tín hiệu Servo 305 Tín hiệu điện áp 306 Demo Dự án 306 Cấu hình GPIO 306 Cấu hình hẹn giờ 4 306 Vòng Task1 308 Quy tắc ISR 309 Chạy demo 310 Kết quả đầu ra 312 Đầu vào bộ hẹn giờ 313
  • 11. Tóm tắt 315 Chương 18: CAN Bus 317 CAN Bus 317 Tín hiệu khác nhau 319 Chủ yếu / Ngắt 320 Phân biệt bus 321 Đồng bộ hóa 322 Định dạng tin nhắn 323 Giới hạn STM32 324 Demo 325 Xây dựng Phần mềm 325 Giao diện UART 326 MCU nhấp nháy 326 Demo Bus 327 Phiên chạy 328 Tin nhắn CAN 330 Đồng bộ 331 Tóm tắt 331 Thư mục 331 Chương 19: Phần mềm CAN Bus 333 Khởi tạo 333 can_init () 336 CAN Nhận Bộ lọc 338 CAN Nhận Ngắt 339 Ứng dụng Nhận 343 Gửi tin nhắn CAN 345 Tóm tắt 346 Chương 20: Dự án mới 347
  • 12. Tạo dự án 347 Makefile 348 Bao gồm Makefiles 351 Phụ thuộc tiêu đề 351 Tùy chọn biên dịch 351 Flash 128k 352 FreeRTOS 353 rtos / opencm3c 353 rtos / heap_4c 354 Mô-đun bắt buộc 354 FreeRTOSConfigh 355 Thư viện người dùng 357 Những sai sót trong Rookie 358 Tóm tắt 358 Thư mục 358 Chương 21: Xử lý sự cố 361 Gnu GDB 361 GDB Server 361 GDB từ xa 363 Giao diện người dùng văn bản GDB 366 Ngoại vi GPIO Trouble 367 Hàm thay thế lỗi 368 Lỗi ngoại vi 369 ISR FreeRTOS Crash 369 Ngăn xếp Overflow 370 Ước tính kích thước ngăn xếp 371 Khi một trình gỡ lỗi không hoạt động 371 Đẩy / kéo hoặc mở cống 372
  • 13. Thiết bị 372 libopencm3 373 Ưu tiên nhiệm vụ FreeRTOS 375 Lập kế hoạch Trong libopencm3 376 Tóm tắt 377 Phụ lục A: Các câu trả lời cho các bài tập 379 Chương 4 379 Chương 5 381 Chương 6 382 Chương 7 383 Chương 8 384 Chương 9 385 Chương 10 386 Chương 11 386 Chương 12 387 Chương 13 388 Chương 14 389 Chương 15 390 Chương 16 390 Chương 17 391 Chương 19 391 Chương 20 392
  • 14. Chương 1: GIỚI THIỆU Các thiết bị ARM Cortex được quan tâm nhiều hiện nay bởi vì các thiết bị ARM được tìm thấy ở mọi nơi. Các sản phẩm chứa các thiết bị ARM có thiết kế từ các hệ thống nhúng vi điều khiển nhỏ đến điện thoại di động và các máy chủ lớn hơn chạy Linux. ARM cũng có mặt ở những thiết bị cao hơn trong trung tâm dữ liệu. Đây là tất cả những lý do nên làm quen với công nghệ ARM. Với những công nghệ khác nhau, từ vi điều khiển đến máy chủ, câu hỏi phát sinh: "Tại sao cần phải nghiên cứu lập trình thiết bị nhúng? Tại sao không tập trung vào các hệ thống người dùng chạy Linux, giống như Raspberry Pi?” Câu trả lời đơn giản là các hệ thống nhúng hoạt động tốt trong các tình huống khó xử lý cho các hệ thống lớn hơn. Chúng thường được sử dụng trong thế giới thực. Ví dụ, chúng giao tiếp giữa thế giới thực và hệ thống máy tính để bàn. Bàn phím sử dụng MCU chuyên dụng (bộ vi điều khiển) để quét các công tắc chính của bàn phím và báo cáo công việc nhấn phím vào hệ thống máy tính để bàn. Điều này không chỉ làm giảm số lượng dây cần thiết mà còn giải phóng CPU chính khỏi việc tính toán hiệu suất cao của nó với nhiệm vụ đơn giản để thông báo việc nhấn phím. Các ứng dụng khác bao gồm các hệ thống nhúng trong các nhà máy để theo dõi nhiệt độ, bảo mật và phát hiện cháy. Các hệ thống nhúng độc lập tiết kiệm tiền và khởi động ngay lập tức. Cuối cùng, kích thước nhỏ của MCU làm cho nó trở thành sự lựa chọn tốt nhất trong các máy bay không người lái, nơi khối lượng là yếu tố quan trọng. Sự phát triển của các hệ thống nhúng theo truyền thống yêu cầu nguồn lực từ hai ngành: • Kỹ sư phần cứng • Người phát triển phần mềm Thông thường, một người được giao nhiệm vụ hoàn thảnh sản phẩm cuối cùng. Kỹ sư phần cứng chuyên thiết kế các mạch điện tử liên quan, nhưng bước cuối cùng sản phẩm yêu cầu phần mềm. Điều này có thể là một thách thức bởi vì người viết phần mềm thường thiếu hiểu biết về điện tử trong khi các kỹ sư thường thiếu chuyên môn về phần mềm. Để tiết kiệm chi phí và thời gian, kỹ sư điện tử thường kim luôn kỹ sư phần mềm. Không có gì bất lợi khi một người thực hiện cả hai chuyên ngành miễn là có các kỹ năng cần thiết. Đó là nội dung cuốn sách này muốn thực hiện.
  • 15. STM32F103C8T6 Thiết bị được sử dụng trong cuốn sách này là STMicroelectronics STM32F103C8T6. Thiết bị này gồm nhiều phần, vì vậy cần chia nhỏ nó: • STM32 (nền tảng STMicroelectronics) • F1 (gia đình thiết bị) • 03 (phân khu của họ thiết bị) • C8T6 (hiển thị ảnh hưởng đến số lượng SRAM, bộ nhớ flash, …) Các thiết bị này sử dụng đường dẫn 32-bit và mạnh hơn đáng kể so với các thiết bị 8-bit. F103 là một nhánh (F1 + 03) của thiết bị STM32. Phần này quyết định CPU và khả năng ngoại vi của thiết bị. Cuối cùng, C8T6 xác định thêm khả năng của thiết bị, như dung lượng bộ nhớ và tốc độ xung. Thiết bị STM32F103C8T6 đã được chọn sử dụng trong cuốn sách này vì những yếu tố sau: • Chi phí thấp (~2 USD trên eBay) • Tính thông dụng (eBay, Amazon, AliExpress, …) • Khả năng nâng cao • Thiết kế STM32F103C8T6 có chi phí thấp cho sinh viên và người yêu thích nó để khám phá thiết bị ARM Cortex-M3. Thiết bị này có sẵn và cực kỳ tiềm năng. Cuối cùng, thiết kế của PCB nhỏ cho phép hàn chân vào các cạnh và cắm vào breadboard. Breadboard là board thuận tiện nhất để thực hiện các thí nghiệm. MCU trên PCB (Hình 1-1) được gọi là "Blue Pill", lấy cảm hứng từ bộ phim The Matrix. Có một số PCB cũ hơn có màu đỏ và được gọi là "Red Pill". Vẫn còn những loại khác, màu đen được gọi là "Black Pill". Trong cuốn sách này, sử dụng Blue Pill.
  • 16. Hình 1-1. STM32F103C8T6 PCB với các chân đề hàn, thường được gọi là "Blue Pill" Chi phí thấp có một lợi thế khác - nó cho phép sở hữu một số thiết bị cho các dự án liên quan đến truyền thông CAN, ví dụ cuốn sách này khám phá truyền thông CAN bằng cách sử dụng ba thiết bị được kết nối bằng một bus thông thường. Sự hỗ trợ của thiết bị ngoại vi của STM32F103 bao gồm: • Cổng GPIO 4 x 16 bit (hầu hết là dung sai 5 volt) • 3 x USART (Bộ thu / phát đồng bộ / không đồng bộ chung) • 2 x bộ điều khiển I2C • 2 x bộ điều khiển SPI • 2 x ADC (Bộ chuyển đổi số tương tự) • 2 x DMA (bộ điều khiển địa chỉ bộ nhớ trực tiếp) • 4 x đồng hồ • xem giờ cặp
  • 17. • 1 x bộ điều khiển USB • 1x bộ điều khiển CAN • 1 x máy phát điện CRC • RAM tĩnh 20K • Thẻ nhớ FLASH 64K (hoặc 128K) • CPU ARM Cortex M3, xung tối đa 72 MHz Tuy nhiên, có một số hạn chế. Ví dụ, bộ điều khiển USB và CAN không thể hoạt động cùng một lúc. Các thiết bị ngoại vi khác có thể khác với các chân I / O được sử dụng. Hầu hết sự khác nhau giũa các chân được quản lý thông qua cấu hình AFIO (Đầu ra chức năng thay thế), cho phép các chân khác nhau được sử dụng cho chức năng của thiết bị ngoại vi. Trong cấu hình ngoại vi, một số xung riêng biệt có thể được bật riêng để điều chỉnh mức sử dụng năng lượng. Khả năng tiên tiến của MCU làm cho nó phù hợp để nghiên cứu. Thẻ nhớ flash được sử dụng ở 64K byte, nhưng có thể thấy rằng nó hỗ trợ 128K. Điều này được đề cập trong Chương 2 và cho phép các ứng dụng tốt được tận dụng vào thiết bị. FreeRTOS Không giống như dòng chip AVR phổ biến (hiện thuộc sở hữu của Microchip), gia đình STM32F103 có đủ SRAM (RAM tĩnh) để chạy thoải mái FreeRTOS (freertos.org). Có quyền truy cập vào một RTOS (hệ điều hành thời gian thực) cung cấp một số lợi thế, bao gồm • Đa nhiệm ưu tiên; • Hàng đợi; • Mutexes và semaphores; và • phần mềm hẹn giờ. Lợi thế đặc biệt là khả năng đa nhiệm. Nó giúp giảm bớt đáng kể gánh nặng của thiết kế phần mềm. Nhiều dự án Arduino tiên tiến được nạp liệu bởi việc sử dụng các máy chủ với một mô hình vòng lặp sự kiện. Mỗi lần thông qua vòng lặp, phần mềm phải thăm dò ý kiến cho dù một sự kiện đã xảy ra và xác định thời gian cho một số hành động. Điều này làm cho quản lý các biến trạng thái trở nên phức tạp và dẫn đến lỗi lập trình. Ngược lại, đa nhiệm ưu tiên cung cấp các nhiệm vụ điều
  • 18. khiển riêng biệt, thực hiện rõ ràng chức năng độc lập của chúng. Đây là một dạng trừu tượng của phần mềm đã được chứng minh. FreeRTOS cung cấp đa nhiệm ưu tiên, tự động chia sẻ thời gian CPU giữa các tác vụ được định cấu hình. Tuy nhiên, các nhiệm vụ độc lập làm thêm một số nhiệm vụ cho việc tương tác một cách an toàn giữa chúng. Đây là lý do tại sao FreeRTOS cũng cung cấp hàng đợi tin nhắn, semaphores, mutexes và nhiều thứ khác để quản lý an toàn. libopencm3 Phát triển code cho các ứng dụng MCU có thể được yêu cầu. Một phần của yêu cầu này đang phát triển với “bare metal” của thiết bị này. Điều này bao gồm tất cả các thanh ghi ngoại vi chuyên dụng và địa chỉ của chúng. Ngoài ra, nhiều thiết bị ngoại vi yêu cầu một "điệu nhảy" nhất định để khiến chúng sẵn sàng để sử dụng. Đây là trang chủ của libopencm3 (libopencm3.org). Nó không chỉ xác định địa chỉ bộ nhớ cho các địa chỉ đăng ký ngoại vi, mà nó còn định nghĩa các macro cho các hằng số đặc biệt cần thiết. Cuối cùng, thư viện bao gồm các hàm C đã được kiểm tra để tương tác với các thiết bị phần cứng ngoại vi. Không có Arduino Không có code Arduino nào được trình bày trong cuốn sách này. Arduino phục vụ mục đích của nó khá tốt, cho phép học sinh nghiên cứu thế giới MCU mà không cần biết trước. Cuốn sách này nhắm đến mục tiêu xa hơn môi trường Arduino bằng cách sử dụng một chế độ chuyên nghiệp phát triển độc lập với các công cụ Arduino. Nếu không có Arduino, không có "cổng kỹ thuật số 10." Thay vào đó, làm việc trực tiếp với một cổng MCU và tùy chọn một chân. Ví dụ, thiết bị Blue Pill được sử dụng trong cuốn sách này có đèn LED tích hợp trên cổng C, là chân 13. Hoạt động trực tiếp với các cổng cho phép hoạt động I / O với tất cả 16 chân cùng một lúc khi cần. Không có IDE Có một số môi trường IDE dựa trên hệ điều đành Windows có sẵn nhưng IDE thay đổi các thư viện liên quan của chúng theo thời gian. Lợi thế của IDE đã cho thường bị loại bỏ khi IDE và hệ điều hành nó chạy khi thay đổi. Cuốn sách này phát triển các dự án dựa trên các công cụ và thư viện nguồn mở sau:
  • 19. • gcc / g ++ (bộ sưu tập trình biên dịch GNU: nguồn mở) • tạo (GNU binutils: open sourced) • libopencm3 (thư viện: nguồn mở) • FreeRTOS (thư viện: mã nguồn mở và miễn phí cho mục đích thương mại) Với thiết bị này, các dự án trong cuốn sách này sẽ vẫn có thể sử dụng được lâu sau khi mua cuốn sách này. Hơn nữa, nó cho phép người dùng Linux, FreeBSD và MacOS — ngoài những người sử dụng nền tảng Windows — để sử dụng cuốn sách này. Nếu sử dụng Windows, có thể tải xuống và cài đặt môi trường Cygwin (www.cygwin.com) vì môi trường giống như Linux được giả thiết cho dự án xây dựng bản demo. Tất cả các dự án được trình bày sử dụng GNU (GNU không phải là Unix) đều tạo ra tiện ích, cung cấp một số hàm được xây dựng với thời gian tối thiểu. Nếu các bản được cung cấp trong cuốn sách này có lỗi, thì hãy đảm bảo sử dụng lệnh tạo GNU, đặc biệt là trên FreeBSD. Một số hệ thống cài đặt GNU làm gmake. Framework Phát triển Mặc dù gcc, libopencm3 và FreeRTOS có thể hoạt động cùng nhau, nhưng nó đòi hỏi sự cân sức của cấu tạo và chế độ làm việc. Thay vì làm công việc tẻ nhạt này, có một framework phát triển có sẵn miễn phí từ github.com để tải xuống. Framework này tích hợp libopencm3 với FreeRTOS. Cũng được cung cấp để tạo các tệp cần thiết để xây dựng toàn bộ chuỗi dự án cùng một lúc hoặc từng dự án riêng lẻ. Cuối cùng, có một số thư viện nguồn mở có thể rút ngắn thời gian phát triển của các ứng dụng mới. Framework này có thể tải xuống tại github.com hoặc tải xuống code riêng của cuốn sách. Giả định Cuốn sách này dành cho những ai muốn vượt ra ngoài kinh nghiệm Arduino. Nó dành cho những ai yêu thích, nhà sản xuất và kỹ sư. Các phần mềm được phát triển trong cuốn sách này sử dụng ngôn ngữ lập trình C, vì vậy nếu đã biết cách lập trình C thì sẽ tốt hơn. Tương tự như vậy, một số kiến thức điện tử kỹ thuật số cơ bản được giả định là liên quan đến các giao diện ngoại vi do thiết bị cung cấp. Thiết bị STM32 có thể là một thách thức để cấu hình và vận hành chính xác. Phần lớn thách thức này là kết quả của cấu hình tệ của các thiết bị ngoại vi. Mỗi thiết bị phụ thuộc vào một xung, phải được kích hoạt và ước lượng được cấu hình. Một số
  • 20. thiết bị bị ảnh hưởng bởi cấu hình xung ngược. Cuối cùng, mỗi thiết bị ngoại vi phải được kích hoạt và được cấu hình để sử dụng. Những người yêu thích và nhà sản xuất không cần phải tìm các cuốn sách khó để đọc. Ngay cả khi bị thách thức, nó vẫn có thể xây dựng và chạy từng thí nghiệm của dự án. Khi kiến thức và sự tự tin được xây dựng, mỗi người đọc có thể phát triển các chủ đề được đề cập. Lời khuyên là tất cả độc giả nên sáng tạo các dự án được trình bày và chạy thử nghiệm thêm. Framework được cung cấp cũng sẽ cho phép tạo các dự án mới với nỗ lực tối thiểu. Những thứ cần thiết Có một số thiết bị cần sử dụng trong các dự án của cuốn sách. Số một trong danh sách là thiết bị Blue Pill (xem Hình 1-1). Nên mua loại có các chân đề hàn vào PCB để dễ dàng sử dụng thiết bị trên breadboard. Chương 18–19 sử dụng ba thiết bị Blue Pill giao tiếp với nhau qua một bus CAN. Nếu muốn thực hiện các thí nghiệm đó, hãy đảm bảo có được ít nhất ba thiết bị. Thiết bị lập trình ST-Link V2 Thiết bị thiết yếu tiếp theo là bộ điều hợp lập trình, cần mua loại “V2”. Hầu hết các loại linh liện sẽ bao gồm bốn dây có thể tháo rời để kết nối thiết bị với thiết bị STM32. Hình 1-2 minh họa lập trình USB, có thể sử dụng được từ Windows, Raspberry Pi, Linux, MacOS và FreeBSD.
  • 21. Hình 1-2. Bộ lập trình và cáp ST-Link V2 Thiết bị STM32F103C8T6 có thể được lập trình theo nhiều cách, nhưng cuốn sách này sẽ chỉ sử dụng trình lập trình USB ST-Link V2. Nó giúp đơn giản hóa mọi thứ khi thực hiện phát triển dự án và cho phép gỡ lỗi từ xa. Breadboard Một breadboard là cần thiết để làm thí nghiệm. Nhiều dự án trong cuốn sách này nhỏ cần không gian cho một thiết bị Blue Pill và một số đèn LED hoặc chip. Tuy nhiên, các thí nghiệm khác, như thí nghiệm trong Chương 18–19, sử dụng ba thiết bị giao tiếp với nhau qua một bus CAN. Cần có một breadboard đủ chỗ cắm bốn thiết bị. Ngoài ra, có thể mua bốn breadboard nhỏ, mặc dù điều này ít thuận tiện hơn.
  • 22. Hình 1-3 minh họa breadboard sử dụng trong cuốn sách này. Nó không phải đủ lớn, nhưng có các đường nối điện ở đầu và cuối mỗi dải. Các đường này được khuyến khích, vì nó giúp giảm bớt hệ thống dây điện. Hình 1-3. Một breadboard với các đường nối được cung cấp Dây điện DuPont Nhiều người dùng không để ý nhiều về hệ thống dây điện của breadboard, nhưng dây DuPont có thể tạo ra một sự khác biệt rất lớn. Có thể tự cắt và tuốt dây nhưng nó bất tiện và mất thời gian. Sẽ thuận tiện hơn khi có sẵn một hộp dây điện. Hình 1-4 minh họa một số dây dẫn DuPont.
  • 23. Hình 1-4. Dây điện DuPont Tụ Bypass 0,1 uF Có một số dự án trong cuốn sách cần sử dụng tụ điện. Hình 1-5 chứa tụ Bypass 0,1uF là linh kiện có màu vàng trong hình.
  • 24. Hình 1-5. Breadboard với STM32F103C8T6 và tụ Bypass 0,1uF được cắm trên các đường nối. Bộ chuyển đổi USB TTL Thiết bị này rất cần thiết cho một số dự án trong cuốn sách này. Hình 1-6 minh họa một loại của thiết bị này. Bộ chuyển đổi này được sử dụng để truyền dữ liệu đến máy tính để bàn / máy tính xách tay. Nếu không có màn hình hiển thị, nó cho phép giao tiếp thông qua một liên kết nối tiếp ảo (qua USB) đến một chương trình điểm mút.
  • 25. Hình 1-6. Cáp chuyển đổi USB (TTL) Đây là thiết bị 5V thông thường và tương thích TTL. Tuy nhiên, lưu ý rằng một trong những tính năng của dòng thiết bị STM32F103 là nhiều chân GPIO có dung sai 5 volt, mặc dù MCU hoạt động với nguồn + 3,3 volt. Điều này cho phép sử dụng các bộ chuyển tiếp TTL này mà không gây hại. Các thiết bị cần thiết khác có thể hoạt động với nguồn 3,3-volt hoặc có thể chuyển đổi giữa 5 và 3,3 volt. Bộ nguồn Hầu hết các dự án được trình bày chỉ hoạt động tốt với đầu ra nguồn của bộ chuyển đổi USB hoặc TTL. Nhưng có một số dự án có thể cần một bộ đổi nguồn. Hình 1-7 minh họa một bộ biến đổi tốt để cung cấp điện cho breadboard.
  • 26. Hình 1-7. Một nguồn cung cấp điện breadboard và bộ chuyển đổi 7.5 VDC MB102 khá thuận tiện vì nó có thể chuyển đổi để cung cấp điện 3,3 volt hoặc 5 volt. Ngoài ra, nó bao gồm nút bật / tắt nguồn. Bộ chuyển đổi thường để cung cấp nguồn điện đầu vào. Trong khi MB102 cấp nguồn lên đến 12 volt đầu vào, hầu hết 9 bộ chuyển đổi VDC có điện áp mạch mở gần 13 vôn hoặc nhiều hơn. Bộ sạc điện thoại Ericsson cũ sử dụng 7,5 VDC ở 600 mA. Nó đo một điện áp không tải ở 7.940 volt. Nó gần với các đầu ra 5 và 3,3 volt hơn MB102 sẽ điều chỉnh. Các linh kiện nhỏ Các linh kiện nhỏ cần phải có là đèn LED và điện trở để sử dụng cho các dự án. Hình 1-8 cho thấy các đèn LED và một điện trở SIP-9.
  • 27. Hình 1-8. Bộ đèn LED 5 mm và một điện trở SIP-9 ở phía dưới Thông thường một đèn LED sử dụng dòng điện khoảng 10 mA cho độ sáng bình thường. Đèn LED nhỏ hơn chỉ cần dòng điện từ 2 đến 5 mA. Với điện áp cung cấp gần 3,3 volt, vì vậy cần có điện trở khoảng 220 Ω để giới hạn dòng điện (220 ohms giới hạn dòng điện đến mức tối đa khoảng 7 mA). Một loại điện trở khác đó là điện trở SIP-9. Hình 1-9 minh họa sơ đồ bên trong cho điện trở này. Ví dụ, nếu làm sáng tám đèn LED, cần có tám điện trở đơn cho mỗi LED, cần được nối dây và chiếm nhiều không gian breadboard. Nhưng nếu sử dụng điện trở SIP-9 có kết nối chung cả tám điện trở thì sẽ tiện hơn, tiết kiệm dây điện và giảm sai sót trong quá trình nối dây.
  • 28. Hình 1-9. Sơ đồ bên trong của điện trở SIP-9 Tóm lược Chương này đã giới thiệu các thiết bị chính sẽ xuất hiện trong cuốn sách này. Chương 2: sẽ hướng dẫn các bước cài đặt phần mềm cần thiết. Khi đã thực hiện qua các bước đơn giản, nhàm chán nhưng cần thiết thì làm các dự án sẽ de74 dàng hơn. Chương 3: Chương này cung cấp thông tin quan trọng về các tùy chọn cấp nguồn. Hướng dẫn các tùy chọn quyền truy cập và sau đó áp dụng trình lập trình ST-Link V2 để thăm dò thiết bị. Chương 4: Thực hiện tiện ích st-flash và lập trình thiết bị bằng chương trình liên kết nhỏ, một chương trình Flash khác với chương trình được cung cấp cùng với thiết bị. Thú vị hơn, API GPOP libopencm3 sẽ được thảo luận và chương trình liên kết nhỏ sẽ được kiểm tra chi tiết. Điều này giải thích cấu hình GPIO và hoạt động của nó. Chương 5: Chương trình Flash sẽ chạy dưới FreeRTOS như một nhiệm vụ. Cách cấu hình tốc độ xung nhịp CPU sao cho không cần cấp một xung RC mặc định. Một chức năng móc tùy chọn để giải quyết sự kiện tràn ngăn xếp được minh họa. Cấu hình và quy ước của FreeRTOS đã được đề cập đến. Chương 6: Chương này sẽ trình bày công thức chung cho việc cấu hình và kích hoạt USART ở chế độ không đồng bộ. Điều này cho phép Blue Pill gửi dữ liệu đến máy tính để bàn để gỡ lỗi hoặc bất kỳ báo cáo nào khác. Đồng thời thể hiện các nhiệm vụ FreeRTOS và hàng đợi tin nhắn được cung cấp. Cách tiếp cận này chia các bên gửi và nhận của ứng dụng thành nhiệm vụ riêng của chúng.
  • 29. Chương 7: Chương này hướng dẫn cách một giao diện USB được xây dựng giữa STM32 và máy tính xách tay / PC. Bản demo nhấn mạnh một số cơ sở FreeRTOS, như nhiệm vụ và hàng đợi tin nhắn. Có các nhiệm vụ thực thi riêng và truyền thông liên công việc an toàn giúp đơn giản hóa việc phát triển ứng dụng. Chương 8: Giao thức SPI và cách áp dụng nó trên STM32 trong FreeRTOS bằng cách sử dụng libopencm3. Chương 9: Chương này giới thiệu tính năng tải lên Intel Hex để code chương trình. Chương 10: Chương này khám phá cấu hình và sử dụng đồng hồ thời gian thực. Cách thiết lập EXTI17 cho phép thiết lập thay đổi tín hiệu GPIO ngắt. Chương 11: Chương này giúp chuẩn bị tốt cho làm việc I2C. Chương 12: Trong chương này, SPI được áp dụng cho vấn đề thực tế của việc điều khiển một màn hình OLED. Khái niệm về AFIO cho gia đình STM32 cũng được áp dụng trong chương này chứng minh làm thế nào SPI1 có thể có chân I / O của nó chuyển đến chân khác nhau. Chương 13: Chương này được xây dựng dựa trên phần mềm được phát triển trong Chương 12, thêm bộ điều khiển DMA để quản lý việc truyền dữ liệu đến thiết bị OLED. Chương 14: Chương này cung cấp môi trường đơn giản để bắt đầu sử dụng ADC. Chương 15: Trong chương này, tổng quan về hệ thống cây đồng hồ đã được trình bày, bắt đầu bằng nguồn đồng hồ chính: HSI và HSE cho đồng hồ hệ thống và HSE, LSE và LSI cho thời gian thực đồng hồ. Đồng hồ LSI cũng được sử dụng bởi bộ đếm thời gian watchdog. Chương 16: Chương này áp dụng bộ đếm thời gian phần cứng cho nhiệm vụ tạo đầu ra tín hiệu PWM thích hợp cho việc điều khiển động cơ servo RC. Ưu điểm của việc sử dụng bộ đếm thời gian phần cứng là ít hoặc không hỗ trợ phần mềm khi nó được cấu hình để chạy, để thay đổi độ rộng xung hoặc chu kỳ của một bản cập nhật nhỏ cho bộ hẹn giờ. Đồng hồ phần cứng cũng cung cấp độ chính xác cao hơn vì chúng không bị chậm trễ phần mềm. Chương 17: Chương này sẽ trình bày cách bộ đếm thời gian STM32 được sử dụng để đo độ rộng xung và khoảng thời gian của tín hiệu một cách dễ dàng. Chương 18: Khi đèn tín hiệu nhấp nháy, mắt người nhìn thấy chúng gần như là liên tục chứ không phải là nhấp nhấy. Vậy chúng được được làm bằng cách nào? Và
  • 30. điều gì xảy ra nếu cần độ chính xác cao hơn cho ứng dụng điều khiển nhà máy? Chương này sẽ trình bày chi tiết hai câu hỏi trên. Chương 19: Chương này sẽ trình bày một số cách viết code C đơn giản bằng cách đặt API ứng dụng CAN bus trong mô-đun canmsgs.c và canmsgs.h, nhiệm vụ viết ứng dụng trở nên dễ dàng hơn. Và một số ứng dụng của CAN BUS. Chương 20: Chương này sẽ chuẩn bị để tạo các dự án STM32 tự thực hiện bằng cách sử dụng FreeRTOS. Chương 21: Chương này trình bày các thiết bị thành viên khác có các thiết bị ngoại vi bổ sung trong gia đình STM32, như DAC (bộ chuyển đổi digitalto-analog), để đặt tên một thiết bị, một thiết bị trong gia đình STM32F407, Core407V, STM32F4.