1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

GIÁO TRÌNH ARM STM32F103XX cơ bản (1)

80 34 0

Đ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 80
Dung lượng 33,2 MB

Nội dung

ARM STM32F1103XX CƠ BẢN Tự động hóa, robot hóa là xu hướng của nhân loại ngày nay. Từ ngàn xưa, con người luôn ước ao có những cỗ máy để làm việc thay thế mình. Trong thời đại hiện nay, với sự phát triển mạnh mẽ của khoa học kỹ thuật, con người đã dần tạo ra những máy móc thông minh, giúp mình từ các công việc thường ngày đến những công việc khó khăn nguy hiểm. Các máy tự động, các robot thông minh, tự hành do con người tạo nên không chỉ tồn tại ở trái đất mà còn có mặt tại mặt trăng, sao hỏa, trong không gian.

1 GIÁO TRÌNH ARM STM32F103 CƠ BẢN I Giới thiệu: a Hình ảnh dạng đóng gói H1: Kiểu đóng gói 64 pin Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com H2: kiểu đóng gói 100pin Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com H3: kiểu đóng gói 144pin b Cấu trúc chip STM32F103xx: i Đây cấu trúc 32bit ii Được chế tạo công ty STMicroelectronics iii Tốc độ max 72Mhz iv Tốc độ tính toán tất phép cộng trừ nhân chia số nguyên có chu kỳ máy v Ngoại vi STM32F103XX nhiều như: ADC,DAC,TIMER,PWM,QEI,UART,SPI,I2C,USB,CAN,SDIO… vi Nguồn nuôi hoạt động từ 2v-3.6v Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com vii Bộ nhớ FLASH lớn từ 64k-1Mbyte viii Nạp xóa nhớ flash 10.000 lần ix Được hỗ trợ nhiều trình biên dịch KEILC,IAR,MICROC… II Mơi trường làm việc trình biên dich KEILC cho arm a Hướng dẫn tạo project KEILC Giới thiệu cách tạo dự án cho vi xử lý ARM Cortex-M3 STM32F103RC Keil ARM Cùng với cách tích hợp thư viện chuẩn CMSIS ST dành cho dòng ARM Bộ thư viện CMSIS ST cung cấp cho người dùng thư viện chuẩn lập trình giao tiếp với thiết bị ngoại vi tương thích với chuẩn CMSIS Thơng qua thư viện này, lập trình viên dễ dàng giao tiếp với thiết bị phần cứng chuẩn dòng Cortex-M3 ST Thư viện chia làm phần: + phần hỗ trợ nhân Cortex-M3: bao gồm mã giao tiếp với nhân CPU, đoạn mã start up code + phần hỗ trợ thiết bị ngoại vi: chứa toàn hàm thư viện điều khiển thiết bị ngoại vi ST Cấu trúc thư viện CMSIS sau: Library + CMSIS + CM3 + CoreSupport //thư mục chứa hàm hỗ trợ nhân Cortex-M3 + DeviceSupport + ST + STM32F10X //System startup code + startup //Start up code + Documentation //tài liệu hỗ trợ + STM32F10x_StdPeriph_Driver //thư mục chứa hàm hỗ trợ thiết bị ngoại vi + inc //thư mục chứa header file + src //thư mục chứa mã nguồn * Lưu ý: Các hàm viết đặt tên theo chuẩn CMSIS, lập trình viên cần tuân theo quy tắc CMSIS sử dụng hàm, tránh viết lại hàm truy cập thẳng vào phần cứng không cần thiết Khởi tạo dự án + Mở Keil IDE, chọn menu “Project->New uVision Project” để tạo dự án Giả dụ đặt tên dự Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com án led * Lưu ý: Thường tạo project hệ thống file quản lý dự án Keil hay bố trí thư mục dự án, điều dễ bị lẫn lộn với file nguồn, ta nên tạo thư mục để quản lý file dự án Chọn chip STM32F103RC Hình 1: Khởi tạo dự án + Sau dự án tạo, ta nên tổ chức lại hệ thống mã nguồn để dễ dàng theo dõi Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com Hình 2: Tổ chức thư mục mã nguồn Như hình ta tạo nhóm file, nhóm “CMSIS”, “StdPeriph_Driver” “Start up” files từ thư viện CMSIS ST * Lưu ý: Khi tạo dự án, Keil hỏi người dùng có sử dụng “start up code” sẵn có khơng Chúng ta khơng sử dụng “start up code” Keil mà dùng ST có thư viện chuẩn + Tích hợp thư viện CMSIS vào chương trình Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com Chúng ta tích hợp thư mục thư viện vào dự án sau: + Nhóm “CMSIS”: thêm file core_cm3.c thư mục “\Libraries\CMSIS\CM3\CoreSupport” system_stm32f10x.c thư mục “\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x” + Nhóm “StdPeriph_Driver”: thêm file liên quan đến điều khiển ngoạI vi, dự án cần điều khiển cổng GPIO, UART nên cần thêm file:stm32f10x_gpio.c, stm32f10x_usart.c stm32f10x_rcc.c thư mục “\Libraries\STM32F10x_StdPeriph_Driver\src” + Nhóm “Start up”: thêm file startup_stm32f10x_hd.s thư mục “Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm” + Nhóm “User”: chứa file người dùng, giả sử thêm file main.c ta vào * Lưu ý: Đối với nhóm StdPeriph_Driver, nên vào nhu cầu điều khiển ngoại vi để thêm vào file tương ứng, tránh thêm file dư thừa làm tăng thời gian biên dịch tốn tài nguyên hệ thống + Khai báo thư mục thư viện cho dự án Sau thêm file cần thiết cho dự án, chưa thể biên dịch thành cơng cịn thiếu đường dẫn tới file khai báo thư viện CMSIS Mở khung điều khiển cấu hình dự án Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com Chọn tab “C/C++” Thêm đường dẫn thư mục sau vào dự án: + \Libraries: thư mục chứa Libraries CMSIS + \Libraries\CMSIS\CM3\CoreSupport + \Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x + \Libraries\STM32F10x_StdPeriph_Driver\inc * Lưu ý : Người dùng thêm vào đường dẫn thư mục khác dự án Cấu hình project Sau thêm file cần thiết cho dự án, phải thiết lập thông số để Keil biên dịch file thực thi Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com + Để nạp chương trình xuống board, cần cấu hình Keil biên dịch file hex(hoặc bin) Mở khung cấu hình dự án, chọn tab “Output”, check ô “Create HEX File” + Để tiện xếp tài nguyên dự án, ta nên xếp file tạm sinh bởI Keil vào thư mục riêng Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com 10 Tương ứng với file object(tab Output) linker(tab Listing) ta lưu thư mục “Obj” “Lst” cho tiện theo dõi sau + Cần lưu ý với thư viện CMSIS, sử dụng nhiều kỹ thuật “macro” lập trình Có số “macro” cần khai báo “define” sẵn dự án để biên dịch thành công * Lưu ý: Nếu sử dụng thư viện chuẩn cho thiết bị ngoại vi, nên khai báo macro: USE_STDPERIPH_DRIVER Trình diễn + Nếu có sẵn board thí nghiệm, nạp trực tiếp file hex sau biên dịch xuống chíp thơng qua Flash Downloader ST cổng COM + Nếu khơng có board, xem cách dùng Debug Simulator Keil Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com 66 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 { delay_us(1000); } } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void chop_tat( uint32_t num, uint32_t time) { while(num ) { GPIO_Write(GPIOA,0x00ff); delay_ms(time); GPIO_Write(GPIOA,0x0000); delay_ms(time); } } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxx void run_left_right( uint32_t time) { uint32_t i; for(i=1;i!=0x0100;i=1) { GPIO_Write(GPIOA,i); delay_ms(time); } } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxx void run_out_in( uint32_t time) { Biên soan: Cao Bá Vinh – email:vinhbacao@gmail.com 67 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 GPIO_Write(GPIOA,(1

Ngày đăng: 20/01/2022, 20:22

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w