由於項目需要,因此入手了c8t6,雖然網上關於f1的教程挺多的,也挺全面,但自己剛開始接觸c8t6,覺得商家配套的開發程序看着不習慣,就想弄成原子的風格,網上直接搜索一下,好像都沒有特別好的教程,對於我這些小白來說還是不太友好的(弄這個工程模板花了一天時間,流下了沒有技術的淚水。。。)。主要借鑑的是原子的開發文檔。
- c8t6工程模板的建立
- SWD調試的配置
首先貼上移植原子的具體例程:
鏈接如下:正點原子openedv資料下載地址;我下載的是mini板的rct6資料,因爲移植前先逛了論壇,原子哥在某篇帖子說了,直接移植這個開發板的例程即可。
-
新建相關文件
新建總文件夾,用來存放本次工程的所有程序,然後再建CORE、HARDWARE、OBJ、FWLIB、SYSTEM、USER這六個文件夾。其中,HARDWARE文件夾是用來存放外設硬件代碼,OBJ用來存放生成調試代碼,FWLIB是各種.c和.h文件,具體如下:
這幾個文件夾包含的文件分別如下:
-
打開MDK,建立新工程,保存到USER下:
芯片型號選擇STM32F103C8,然後會彈出run-time environment窗口,選擇取消,
USER文件夾會出現這兩個我們需要的文件:
-
在MDK添加項目所需要的分組以及文件:
-
配置options for target:
其中,select folder for objects是選擇生成的hex存放的目錄,這裏選擇存放在OBJ文件夾中,create HEX file是生成hex文件,用於下載到開發板的:
到這裏就基本上完成了新建工程模板。在上網找相關教程的時候發現很多帖子說延時慢了10倍,然後要在初始化的時候添加一個system_init()函數之類的,後來我在原子的開發文檔找到了這句話:
所以不用再加那句話了。編譯程序,應該是通過的(程序源碼在後面鏈接,如果按照上面的步驟來沒通過的話就對比一下,或許有什麼地方漏掉了也說不好,後面鏈接的工程文件親測可用)。 -
添加LED驅動代碼:
我用的核心板關於LED的管腳分配如下:
所以需要配置的是PC13號管腳。
#include "led.h"
//初始化PC13爲輸出口.並使能這個口的時鐘
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PC端口時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //LED2-->PC13 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度爲50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根據設定參數初始化PC13
GPIO_SetBits(GPIOC,GPIO_Pin_13); ////PC13輸出低,關閉所有LED
}
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED0 PCout(13) // PC13
void LED_Init(void);//初始化
#endif
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶佔優先級,2位響應優先級
uart_init(9600); //串口初始化爲9600
delay_init(); //延時函數初始化
LED_Init();
while(1)
{
LED0=0;
delay_ms(1000);
LED0=1;
delay_ms(1000);
}
}
SWD配置
- 由於我使用的是ST-LINK,所以這裏選擇ST-LINK debuger,然後選擇SW port:
- Flash Download選擇如下:
最後選擇Download,實現SW下載。整個完整的stm32f103c8t6工程模板點擊這裏:百度網盤鏈接:w7xt