Hướng dẫn Sử dụng và lập trình KIT MiniSTM32 - Nhà tài trợ Hoàng Phát

daotruongpro

http://vtechpro.vn
#1
Trước hết xin nhận lỗi với nhà tài trợ Hoang phat vì nhận được KIT đã lâu nhưng chưa có TUT đáp lại sự tài trợ đó. Rất mong nhà tài trợ thông cảm cho sự chậm trễ này, Xin Cảm ơn.
Hôm nay mình chính thức xin mở TUT hướng dẫn lập trình trên KIT các bài từ cơ bản nhất để các thành viên mới có thể lập trình được dòng ARM khi trên tay đã có bộ KIT MiniSTM32.
Về hướng dẫn lập trình cho KIT tài trợ này đã có 1 Theard mở ra (Tại đây) cũng có các bài viết hướng dẫn tuy nhiên với những người đã làm về ARM - STM32 rồi thì sẽ dễ tiếp cận còn các Newbie thì sẽ khó khăn hơn. Mình sẽ mở Theard mới này để tất cả mọi người đều có thể theo dõi và làm được.
1. Sơ đồ nguyên lý
Luồng bên đã có và mình sẽ up thêm vào đây để các bạn tiện view
2014-05-13_143121.jpg

2. Sơ đồ các khối trên KIT
IMAG0416.jpg

Trong KIT đã tích hợp các khối cơ bản cho giao tiếp ngoại vi của chip như: RS232, USB, GPIO, LED, BUTTON, RTC đã có thạch anh 32.768 chúng ta chi việc code cho khối RTC là chạy. VỚi các khoois này các bạn có thể thực hành được hết các bài tập cơ bản, để làm nền tiến tới các bài học nâng cao hơn :):):).
Đã qua bài giới thiệu KIT đến bài lập trình đơn giản GPIO Classic. Go Go Go...!
 

Đính kèm

daotruongpro

http://vtechpro.vn
#2
Bài 2: lập trình GPIO cho STM32.
- Bước 1 Cài Keil C vesion 4.73
Các bạn tải tại trang chủ của Keil luôn nhé: Link
keil C.jpg

- Bước 2: Các bạn tải về bộ thư viện cần thiết của STM32F1xx
Các bạn đăng ký tài khoản trên trang STMicroelectronics và Down về tại đây, phiên bản hiện tại là V3.50
2.jpg

- Bước 3: Bắt đầu tạo mới Project
Các bạn làm lần lượt theo thứ tự sau:
1. Tạo mới 1 thư mục để chứa các Project và File thư viện, mình tạo với tên MiniSTM32
1.jpg

Bên trong có 2 thư mục con chứa File thư viện và Project
+, Ở file Library các bạn giải nén thư viện của STM32F1xx vừa Down về và Coppy file Libraries bên trong thư viện đó sang thư mục của mình để tiện làm việc.
Đường dẫn như sau:
3.jpg


+, Trong file Project tạo mới thư mục với tên BlinkLed và bên trong có 2 thư mục con là Lst và Obj để chứa File biên dịch.

Và Coppy 4 file mã nguồn trong đường dẫn \STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template đến thư mục BlinkLed
00.jpg

2. Mở Keil C lên và tạo mới Project như sau:
5.jpg

Tìm đến thư mục \MiniSTM32\Project\BlinkLed đặt tên cho Project và lưu lại
4.jpg

Đến phần chọn chip các bạn chọn tìm đến thẻ của STMicroelectronis và chọn chip STM32F103RB
7.jpg

8.jpg

Chọn OK, tiếp theo Keil C hỏi có Copy file Startup vào Project của mình không thì chọn NO nhé, vì sẽ sử dụng file Startup của thư viện ST
9.jpg

Đã qua 1 số thủ tục tiếp đến cấu hình cho Project như sau:
2. Nhấn (Ctrl+N) để ạo ra file text mới và lưu với tên main.c hoặc tùy ý
chọn File Extentions
10.jpg

Đặt tên theo hướng dẫn trong hình
11.jpg

Tiếp theo đến phần Add Files thư viện cho các mục bên ở giữa như sau:
#Source:
+,main.c (\Project)
+,Stm32F10x_it.c(|Priject)
#CMSIS:
+,core_cm3.c (\MiniSTM32\Libraries\CMSIS\CM3\CoreSupport)
+,system_stm32f10x.c (\MiniSTM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x)
#Startup:
+,startup_stm32f10x_md.s ( \MiniSTM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm)
#Std_Periph_Driver:
+, misc.c
+, stm32f10x_rcc.c
+,stm32f10x_gpio.c
(\MiniSTM32\Libraries\STM32F10x_StdPeriph_Driver\src)

Tiếp theo các bạn nhấn OK và chuyển qua Tag Taget Config
3. Cấu hình Taget Config như sau:
Taget chọn thạch anh ứng với giá trị thạch anh trên KIT 8MHz.
Tag Output nhận Select Foldel for Object bà link tới thư mục Obj.
Tag Listing tương tự như Output và link tới Foldel Lst
Tag C/C++ các bạn thêm đoạn mã sau cho mình vào dòng Define: STM32F10X_MD, USE_STDPERIPH_DRIVER, HSE_VALUE=8000000
Chuyển xuống Include Paths làm theo hình như sau:
12.jpg

Các bạn chú ý Include theo đúng đường dẫn như trong hình.
Tag Debug chọn J-link và nhấn vào Settings chuyển qua thẻ Flash Download rồi Ađ đúng chip của mình các bạn nhé!
13.jpg

Các bạn thêm đoạn mã vào main.c như sau
Mã:
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stm32f10x_conf.h"

GPIO_InitTypeDef gpioInit;

void Sys_init(void); // Chuong trinh khoi tao chip
void delay(unsigned long uDelay); // Chuong trinh delay

void Delay(unsigned long uDelay) {
    while(--uDelay);
}

int main() {
    Sys_init(); //goi ct khoi tao
    while(1) { //vong lap vo han
        GPIO_SetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9);
        Delay(0xFFFFF); /tre
        GPIO_ResetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9);
        Delay(0xFFFFF);
    }
}

void Sys_init(void) {
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    gpioInit.GPIO_Mode=GPIO_Mode_Out_PP;
    gpioInit.GPIO_Speed=GPIO_Speed_50MHz;
    gpioInit.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_Init(GPIOB, &gpioInit);
}
Bước cuối cùng các bạn kiểm tra kỹ xem đã làm đúng như hướng dẫn chưa và nhấn F7 để biên dịch và nạp vào chip thôi. Chúc các bạn thành công!
 

Đính kèm

  • 51.9 KB Lượt xem: 20

daotruongpro

http://vtechpro.vn
#3
Project mẫu cho các bạn, Compiler success tại bất cứ đâu.
Chú ý hãy làm theo hướng dẫn trước khi tải Project này để các bạn có thể làm chủ được phần mềm nhé!
Sẽ có các bài hướng dẫn tiếp theo ở buổi sau.
Chúc vui
 

Đính kèm

ngocha

Kỹ sư
#4
Em xin bổ sung thêm 1 chút
Down cái project của mod Daotruongpro về xong rùi dùng keil-MDK mở cái project nên setup thêm 1 chút nữa.
Xong rùi vào project/option for taget../debug tích vào ô use j link như hình.
2014-07-23_213159.png
xong rùi vào setting bên cạnh j-link/j trace cortex chọn JTAG như hình rồi ok.

2014-07-23_230909.png
Đến đây mỗi lần nạp code ta có thể dùng thẳng keil C để nạp mà không cần thêm phần mềm nạp nào khác nữa Chọn load để nạp vào chip như hình bên dưới.
2014-07-23_213159.png
Sau khi nạp xong thì có thể dùng thẳng keil C để debug. Vào debug chọn start/ stop debug (hoặc nhấn ctrl+F5)
Sau đó có thể chọn chạy từng lệnh(step over) hoặc chạy liên tục(run)... và có thể quan sát được các thanh ghi trên màn hình.

2014-07-23_213159.png
 

QWERTY@#$%

Học sinh phổ thông
#5
Chủ thớt ơi cho m hỏi sao m làm đúng y hệt rồi khi f7 nó báo lỗi
#5 cannot open source input file "stm32_eval.h"
 

daotruongpro

http://vtechpro.vn
#6
Chủ thớt ơi cho m hỏi sao m làm đúng y hệt rồi khi f7 nó báo lỗi
#5 cannot open source input file "stm32_eval.h"
Bạn làm k đúng ở bước nào đấy thì mới vậy chứ? Nếu đúng như hướng dẫn chắc chắn chạy!
 

hoangtu94qb

Học sinh phổ thông
#7
Bài 2: lập trình GPIO cho STM32.
- Bước 1 Cài Keil C vesion 4.73
Các bạn tải tại trang chủ của Keil luôn nhé: Link
Xem đính kèm 31235
- Bước 2: Các bạn tải về bộ thư viện cần thiết của STM32F1xx
Các bạn đăng ký tài khoản trên trang STMicroelectronics và Down về tại đây, phiên bản hiện tại là V3.50
Xem đính kèm 31236
- Bước 3: Bắt đầu tạo mới Project
Các bạn làm lần lượt theo thứ tự sau:
1. Tạo mới 1 thư mục để chứa các Project và File thư viện, mình tạo với tên MiniSTM32 Xem đính kèm 31240
Bên trong có 2 thư mục con chứa File thư viện và Project
+, Ở file Library các bạn giải nén thư viện của STM32F1xx vừa Down về và Coppy file Libraries bên trong thư viện đó sang thư mục của mình để tiện làm việc.
Đường dẫn như sau:
Xem đính kèm 31243

+, Trong file Project tạo mới thư mục với tên BlinkLed và bên trong có 2 thư mục con là Lst và Obj để chứa File biên dịch.

Và Coppy 4 file mã nguồn trong đường dẫn \STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template đến thư mục BlinkLed
Xem đính kèm 31256
2. Mở Keil C lên và tạo mới Project như sau:
Xem đính kèm 31245
Tìm đến thư mục \MiniSTM32\Project\BlinkLed đặt tên cho Project và lưu lại
Xem đính kèm 31257
Đến phần chọn chip các bạn chọn tìm đến thẻ của STMicroelectronis và chọn chip STM32F103RB
Xem đính kèm 31247
Xem đính kèm 31248
Chọn OK, tiếp theo Keil C hỏi có Copy file Startup vào Project của mình không thì chọn NO nhé, vì sẽ sử dụng file Startup của thư viện ST
Xem đính kèm 31249
Đã qua 1 số thủ tục tiếp đến cấu hình cho Project như sau:
2. Nhấn (Ctrl+N) để ạo ra file text mới và lưu với tên main.c hoặc tùy ý
chọn File Extentions
Xem đính kèm 31250
Đặt tên theo hướng dẫn trong hình
Xem đính kèm 31251
Tiếp theo đến phần Add Files thư viện cho các mục bên ở giữa như sau:
#Source:
+,main.c (\Project)
+,Stm32F10x_it.c(|Priject)
#CMSIS:
+,core_cm3.c (\MiniSTM32\Libraries\CMSIS\CM3\CoreSupport)
+,system_stm32f10x.c (\MiniSTM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x)
#Startup:
+,startup_stm32f10x_md.s ( \MiniSTM32\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm)
#Std_Periph_Driver:
+, misc.c
+, stm32f10x_rcc.c
+,stm32f10x_gpio.c
(\MiniSTM32\Libraries\STM32F10x_StdPeriph_Driver\src)

Tiếp theo các bạn nhấn OK và chuyển qua Tag Taget Config
3. Cấu hình Taget Config như sau:
Taget chọn thạch anh ứng với giá trị thạch anh trên KIT 8MHz.
Tag Output nhận Select Foldel for Object bà link tới thư mục Obj.
Tag Listing tương tự như Output và link tới Foldel Lst
Tag C/C++ các bạn thêm đoạn mã sau cho mình vào dòng Define: STM32F10X_MD, USE_STDPERIPH_DRIVER, HSE_VALUE=8000000
Chuyển xuống Include Paths làm theo hình như sau:
Xem đính kèm 31258
Các bạn chú ý Include theo đúng đường dẫn như trong hình.
Tag Debug chọn J-link và nhấn vào Settings chuyển qua thẻ Flash Download rồi Ađ đúng chip của mình các bạn nhé!
Xem đính kèm 31260
Các bạn thêm đoạn mã vào main.c như sau
Mã:
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stm32f10x_conf.h"

GPIO_InitTypeDef gpioInit;

void Sys_init(void); // Chuong trinh khoi tao chip
void delay(unsigned long uDelay); // Chuong trinh delay

void Delay(unsigned long uDelay) {
    while(--uDelay);
}

int main() {
    Sys_init(); //goi ct khoi tao
    while(1) { //vong lap vo han
        GPIO_SetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9);
        Delay(0xFFFFF); /tre
        GPIO_ResetBits(GPIOB, GPIO_Pin_8 | GPIO_Pin_9);
        Delay(0xFFFFF);
    }
}

void Sys_init(void) {
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    gpioInit.GPIO_Mode=GPIO_Mode_Out_PP;
    gpioInit.GPIO_Speed=GPIO_Speed_50MHz;
    gpioInit.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_Init(GPIOB, &gpioInit);
}
Bước cuối cùng các bạn kiểm tra kỹ xem đã làm đúng như hướng dẫn chưa và nhấn F7 để biên dịch và nạp vào chip thôi. Chúc các bạn thành công!
Bạn hướng dẫn mình code với làm phần cứng bài RTC dùng stm32f103c8t6 hiện thị trên LCD với ạ.
 

Quảng cáo Google