1. Trang chủ
  2. » Tất cả

Thực-hành-Kỹ-thuật-vi-xử-lý-PHẦN-1

25 4 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 4,3 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bước 3: Chọn đường dẫn lưu thư mục cài đặt, sau đó chọn Next... Cài đặt driver cho stlink Nếu sử dụng stlink Link tải: https://www.123link.biz/0eIvm3s Bước 1: Trong thư mục en.stsw-link0

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA KỸ THUẬT ĐIỆN TỬ -o0o -

BÀI THỰC HÀNH MÔN KỸ THUẬT VI XỬ LÝ

NGÀNH HỌC: ĐIỆN-ĐIỆN TỬ VÀ ĐIỆN TỬ-VIỄN THÔNG

ĐỐI TƯỢNG: ĐẠI HỌC

-HÀ NỘI,

Trang 2

2019-BÀI 1 TỔNG QUAN VỀ VĐK STM32F103C8T6

& MÔ PHỎNG TRÊN PROTUS

Hôm nay chúng ta sẽ đến với những kiến thức cơ bản về vi điều khiểnSTM32F103C8T6

1.Đối tượng tham gia học tập:

 Sinh viên đam mê lập trình nói chung và đam mê lập trình vi điều khiển nói riêng

 Sinh viên muốn qua kì thi “Kỹ thuật vi xử lí”

2.Yêu cầu:

 Có ý thức Tự học tập, tự nghiên cứu

 Sinh viên đã hiểu biết cơ bản ít nhất một ngôn ngữ lập trình C

 Chăm chỉ hoàn thành các bài tập nếu như các bạn muốn việc học là hiệuquả và tiết kiệm thời gian của chính các bạn

3.Hình thức học tập:

 Không nặng về lý thuyết, các bài thực hành sẽ ngắn gọn, dễ hiểu Tuynhiên, cuối mỗi bài, yêu cầu các bạn nghiên cứu thêm và tự đặt ra các câu hỏi

về ý nghĩa mỗi dòng code trong các bài tập

 Ghi lại mọi thắc mắc và hỏi trong tiết học để chúng ta cùng thảo luận vàtối ưu code được tốt hơn Khuyến khích tự tìm kiếm câu trả lời trên google

Trang 3

Chuẩn bị: DOWNLOAD và cài đặt KeilC

Có rất nhiều trình biên dịch hỗ trợ lập trình STM32F103C8T6 trong đó có một công cụ được sử dụng nhiều là KeilC KeilC hỗ trợ lập trình ASM và C với họ

vi điều khiển STM32F103C8T6 Sau đây là các bước để cài đặt trình biên dịch này

1 Đầu tiên bạn download link dưới đây:

https://www.123link.biz/wNcHyD

2 Hướng dẫn cài đặt:

Bước 1: Giải nén sau đó các bạn chạy file “MDK521a.EXE”, Chọn Next.

Bước 2: Tick vào ô “I agree to all the tems of the preceding License

Agreement”, chọn Next.

Bước 3: Chọn đường dẫn lưu thư mục cài đặt, sau đó chọn Next.

Trang 4

Bước 4: Điền thông tin cá nhân và chọn Next.

Bước 5: Chờ cho máy tiến hành cài đặt.

Bước 6: Sau khi cài đặt xong, chọn Finish.

Vậy là bạn đã cài đặt xong phần mềm KeilC cho STM32

Trang 5

3 Hướng dẫn cài đặt gói pack cho STM32F1XX Bước 1: Vào file Keil5Install vừa giải nén và chay mục

Keil.STM32F1xx_DFP.2.1.0

Bước 2 Nhấn next để cài đặt

Bước 3

Trang 6

.Bước 4: Nhấn Finish

4 Tải thư viện chuẩn cho STM32F1XX

Tải thư viện chuẩn cho STM32F103C8T6 theo link sau:

https://www.123link.biz/h99c1ID

5 Cài đặt driver cho stlink (Nếu sử dụng stlink)

Link tải: https://www.123link.biz/0eIvm3s

Bước 1: Trong thư mục en.stsw-link009 sau khi đã giải nén, kích chuột phải vào

file stlink_winusb_install (Windows Batch File) => Run as administrator.

Bước 2: Chọn Next cho các quá trình cài đặt sau đó chọn Finish.

Bươc 3: Kết nối ST-Link V2 với thiết bị STM32, sau đó kết nối với máy tính.

Kiểm tra port để xem việc cài driver có thành công hay không Trong bài nàymình dùng kit STM32F103C8T6 nên mình sẽ kiểm tra như sau:

– Kết nối ST-Link V2 với STM32F103C8T6: Sơ đồ cắm dây từ mạchnạp ST-Link V2 sang kit STM32F103 như sau:

3.3V – 3.3V GND – GND SWDIO – DIO SWCLK – DCLK

Trang 7

– Sau khi cắm vào máy tính, chọn và kích chuột phải thư mục This PC -> chọnManage Ở cây thư mục System Tools, kích chọn Device Manager

– Nếu kết quả giống hình bên dưới thì việc cài đặt driver đã hoàn thiện

Bài 1: Hướng dẫn tạo project với KeilC lập trình STM32F103C8T6.

Trang 8

1 Thực hành tạo project

Bước 1: Tạo thư mục tên thường là tên project, ví dụ GPIO (tên này tùy ý) và 2

thư mục con trong thư mục GPIO với tên là lib và project:

lib: chứa thư viện chuẩn của nhà sản xuất.

project: chứa file viết code, ngắt và các file tạo ra khi chạy chương trình.

Tiếp theo tạo thư mục con keil trong thư mục project (thư mục này sẽchứa các file sinh ra khi biên dịch chương trình) Ta sẽ sử dụng các thư mục nàysau

Bước 2: Copy 2 thư mục CMSIS và STM32F10x_StdPeriph_Driver trong đường …keil\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries vào thư mục lib

Trang 9

Bước 3: Copy 5 files main.c, stm32f10x_conf.c, stm32f10x_it.c, stm32f10x_it.h, system_stm32f10x.c từ trong thư mục …keil\ STM32F10x_StdPeriph_Lib_V3.5.0\Project\

STM32F10x_StdPeriph_Template vào thư mục project

Trang 10

Bước 4: Khởi động keilC lên để bắt đầu tạo project mới

Chọn Project -> New Uvision project Trỏ đến thư mục keil trong thư mụcGPIO vừa tạo đặt tên project là GPIO(tên này tùy ý) => bấm Save

Sau đó ta có giao diện project như sau:

Bước 5: 1 cửa sổ mới được mở ra để cho chúng ta chọn chip Ở đây chúng ta sử

dụng stm32f103c8t6 nên sẽ chọn MCU là STM32F103C8 => nhấn OK

Trang 11

Bước 6: Cửa sổ manage run hiện ra Chọn OK để kết thúc.

Bước 7: Mở cửa sổ Manage project item bằng cách kích vào biểu tượng hình 3

ô vuông màu xanh, đỏ trắng hoặc vào đường dẫn sau : Project => manage => project items.

Trang 12

Chỉnh sửa tên ở ô Projects target thành GPIO (thường là tên project) và sửa tên

ở ô Groups thành lib (dùng để chứa các thư viện mẫu) và them group user(thường chứa file main, file chương trình và các thư viện tự phát triẻn)

Add Files trong thư viện mẫu có sẵn vào project của chúng ta vừa tạo Sau đây

chúng ta add file vào mục Group>lib

LƯU Ý vị trí các file cụ thể như sau:

File core_cm3.c nằm trong đường dẫn GPIO\lib\CMSIS\CM3\CoreSupport File startup_stm3210x_md.s nằm trong đường dẫn: GPIO\lib\CMSIS\CM3\ DeviceSupport\ST\STM32F10x\startup\arm và lưu ý là đuôi md.s hay hd.s tùy thuộc vào loại MCU mà ta sử dụng Đuôi file này là đuôi s nên ở Files of type

phải để là All files(*.*) thay vì *.c

3 File misc.c; stm32f10x_gpio.c; stm32f10x_rcc.c nằm trong thư mục GPIO\

lib\STM32F10x_StdPeriph_Driver\src Nếu sử dụng UART hay ADC… thì cầnphải add thêm các thư viện đó cũng nằm trong thư mục này Chi tiết sẽ gặptrong các bài thực hành sau

Trang 13

Sau khi add files thì Groups>lib chứa 5 file: core_cm3.c; misc.c;

Trang 14

Bước 8: Vào tab Options for target bằng cách click vào biểu tượng đũa magic hoặc đường dẫn sau Project > Options for target Chỉnh sửa các tab theo các

Trang 15

 Ở tab C/C++ thêm dòng chữ và add các link giống như hình.

Trang 16

ở tab Utilities click setting

Trang 17

Thẻ flash download chọn reset and run.

Sau đó nhấn OK là xong phần setup

Sau đó chúng ta sẽ cắm stlink vào cổng USB của máy tính

Vào lại mục Setting trong tab debug Chọn thẻ debug và thấy đã nhận stlink

(sau khi đã cắm stlink vào cổng USB, ở đây sử dụng mạch nạp stlink V2)

Trang 18

Bước 9: Mở file main lên và xóa hết nội dung, chỉ chừa lại nội dung như trong

hình dưới đây Chú ý tên thư viện đã được sử dụng!

Bước 10: Kích vào biểu tượng build (F7) nếu build ở lần đầu tiên và rebuild

cho các lần tiếp theo Xem kết bảng thông báo build output nếu không xuấthiện 0 lỗi tức là đã thành công

Trang 19

Hãy chắc chắn mình đã cắm bộ kit vào máy tính, thông qua mạch nạp Stlink.Khi nạp code thì bạn chỉ cần nhấn vào biểu tượng Load hoặc vào Flash =>LoadPhím tắt là F8 Chúc các bạn thành công.

Sau khi thực hiện xong đến bước này, bạn đã có một thư mục chứa một projectmẫu Hãy copy thư mục này lại để sử dụng cho các project ở những bài tiếptheo và không cần phải tạo lại project mới

Trang 20

Bài 2: Lập trình nháy LED với STM32F103C8T6.

1 Sơ lược về lý thuyết.

GPIO là từ viết tắt của General purpose I/O ports tạm hiểu là nơi giao tiếpchung giữa tín hiệu ra và tín hiệu vào GPIO là bài cơ bản, cần nắm vững khihọc bất kì một VĐK nào đó Cần hiểu được các thuật ngữ, chế độ, cấu hình, sốlượng… của các chân GPIO Ở STM32 thì các chân GPIO chia ra làm nhiềuPort vd: PortA, PortB… Số lượng Port phụ thuộc vào số lượng chân(pin) vàcách gọi phụ thuộc vào nhà sản xuất (ví dụ VĐK X có PortA mà lại không cóPortD) Mỗi Port thường có 16 chân đánh số từ 0 -> 15 tương ứng với mỗi chân

là 1bit (nhiều dòng có 32 chân) Mỗi chân có 1 chức năng khác nhau như analoginput, external interrupt hay đơn thuần chỉ là xuất tín hiệu on/off ở mức 0,1.Chức năng của mỗi chân thì chúng ta cần tra datasheet của nhà sản xuất trướckhi lập trình hoặc thiết kế mạch

Các mode GPIO của STM32:

- Input floating: cấu hình chân I/O là ngõ vào và để nổi

- Input pull-up: cấu hình chân I/O là ngõ vào, có trở kéo lên nguồn.

- Input-pull-down: cấu hình chân I/O là ngõ vào, có trở kéo xuống GND

- Analog: cấu hình chân I/O là Analog, dùng cho các mode có sử dụngADC hoặc DAC

- Output open-drain: cấu hình chân I/O là ngõ ra, khi output control = 0 thìN-MOS sẽ dẫn, chân I/O sẽ nối VSS (GND), còn khi output control = 1thì P-MOS và N-MOS đều không dẫn, chân I/O được để nổi – không cóđiện thế Nếu bên ngoài nối với VCC qua điện trở thì mặc định xuất là3.3V, khi đó điều khiển mức 0 sẽ xuống GND (Sử dụng trở treo)

- Output push-pull: cấu hình chân I/O là ngõ ra, khi output control = 0 thì

N-MOS sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì MOS dẫn, chân I/O được nối VDD

Trang 21

P Alternate function pushP pull : sử dụng chân I/O vừa là ngõ ra và vừa làngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chứcnăng output giống Output push-pull Ngoài ra nó còn để sử dụng chochức năng remap.

- Alternate function push-pull : : sử dụng chân I/O vừa là ngõ ra và vừa làngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chứcnăng output giống Output open-drain Ngoài ra nó còn để sử dụng chochức năng remap (Bạn có thể google thêm các chức năng remap)

Bài tập 1: Nhấp nháy đèn ở chân PortC chân 13

Trang 22

//cai dat cho chan PC13

GPIO_Struct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Struct.GPIO_Pin = GPIO_Pin_13 ;

GPIO_Struct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_Struct);

while(1){

GPIO_SetBits(GPIOC, GPIO_Pin_13);

Delay(1000);

GPIO_ResetBits(GPIOC, GPIO_Pin_13);Delay(1000);

}

}

void Delay(unsigned int time){

unsigned int i,j;

for(i=0;i<time;i++){

for(j=0;j< 0x2AFF; j++);

}

}

Trang 23

Bài 2: Điều khiển 8 led sáng tắt theo mong muốn

// dieu khien 8 led

Trang 24

GPIOA->ODR = 0x0055;

Delay(1000);

}

}

void Delay(unsigned int time){

unsigned int i,j;

for(i=0;i<time;i++){

for(j=0;j< 0x2AFF; j++);

}

}

Câu hỏi ôn tập:

 Muốn thay đổi thời gian sáng, tắt thì làm thế nào? Tại sao trong hàm Delay lại dùng giá trị 0x2AFF?

 Muốn 1 đèn ở một vị trí bất kì (trong Port A/B/C) sáng tắt thì sao? Thử code một chương trình nhấp nháy 4 led ở port A

 Muốn 8 đèn sáng tắt luân phiên (40-04) thì làm thế nào?

 Muốn 8 đèn sáng dần rồi tắt dần thì làm thế nào?

 Lập trình để đèn sáng lần lượt từ trái qua phải, sau đó lại sáng lần lượt từ phải qua trái? Bạn cảm thấy thế nào?

Trang 25

Bài tập nâng cao theo nhóm

Lập trình trên 8 led (xếp thành 1 cột) của một Port của STM32 để thực hiệnchức năng theo trò chơi xếp hình, hoặc nước nhỏ giọt Cụ thể như sau:

– Đầu tiên trên cùng có 1 LED sáng sau đó LED rơi dần xuống dưới và sẽ dừng lại ở vị trí cuối cùng.

– Khi LED số 1 chạm đến vị trí dưới cùng thì xuất hiện 1 LED sáng ở vị trí ở trên cùng và lặp lại việc rơi xuống dưới và dừng lại khi đến vị trí ngay trên con LED cũ.

– Lặp lại như vậy cho đến khi số LED đầy trên cột và sẽ bắt đầu lại từ đầu.

Bài tập cá nhân

Hãy sắp xếp 16 đèn LED thành chữ cái đầu tiên trong tên của bạn Code hiệuứng cho nó mà bạn thấy đẹp và lạ nhất! Tìm trên mạng hoặc bạn tự nghĩ!

Ngày đăng: 23/10/2019, 07:45

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w