?一、硬件設備
? ? ? ? 所需設備:
? ? ? ????????? 1、STM32F103C8T6;
? ? ????????? ? 2、USB 轉(zhuǎn) TLL 或 ST-LINK V2 01-0;
? ? ? ????????? 3、杜邦線若干;
? ? ????????? ? 4、面包板1個;
? ? ????????? ? 5、USB安卓數(shù)據(jù)線(使用USB 轉(zhuǎn) TLL需要用到);
?二、工程建立
? ? ? ? 1、首先需要建立一個STM32F103C8T6的keil工程。
? ? ? ? 可以根據(jù)以下鏈接結(jié)合實際情況建立。
????????(74條消息) STM32新建keil工程具體步驟(詳細)_愛學習的小王呀的博客-CSDN博客
?三、環(huán)境配置&編寫代碼
? ? ? ? 1、環(huán)境配置和代碼可以參考以下兩個鏈接:? ? ? ?
? ? ? ? (1):(74條消息) 用STM32F103C8T6制作流水燈_甜心猛男的博客-CSDN博客_c8t6燒程序時需要改變跳線帽位置嗎? ? ?
????????(2):(74條消息) STM32F103寄存器方式點亮LED流水燈_Melody crush的博客-CSDN博客_stm32f103寄存器led點燈
? ? ? ? 這里簡單給出幾張個人認為需要注意的點:
????????先點擊? ? ? ??
點擊Device
?配置紅框內(nèi)容 ,并點擊Debug(如果使用USB 轉(zhuǎn) TTL則不用勾選藍色框;如果使用ST-link做的則要勾選)
?點擊上圖藍色框里的Setting,選擇Flash Download,進行以下配置。(如果不選Reset and Run則每次燒錄到板上后都需要按一下板上的Reset按鍵才會看到現(xiàn)象。選不選看個人,影響不大)
?2、編寫main函數(shù)
//頭文件
#include "stm32f10x.h"
#include "GPIOLIKE51.h"
//函數(shù)聲明
void LED_Init(void);
void RCC_Configuration(void);
//=============================================================================
//文件名稱:Delay
//功能概要:延時
//參數(shù)說明:nCount:延時長短
//函數(shù)返回:無
//=============================================================================
void Delay(uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
//=============================================================================
//文件名稱:main
//功能概要:主函數(shù)
//參數(shù)說明:無
//函數(shù)返回:int
//=============================================================================
int main(void)
{
RCC_Configuration(); //開啟GPIO時鐘
LED_Init(); //初始LED引腳的GPIO口
while (1)
{
PAout(1)=0; //1為滅
Delay(0xfffff); //延時
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
PAout(1)=1;
PBout(12)=0; //0為亮
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
PBout(12)=1;
PCout(15)=0;
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
Delay(0xfffff);
PCout(15)=1;
}
}
//=============================================================================
//文件名稱:RCC_Configuration
//功能概要:開啟GPIO時鐘
//參數(shù)說明:無
//函數(shù)返回:無
//=============================================================================
void RCC_Configuration(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //開啟GPIOA時鐘并使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //開啟GPIOB時鐘并使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //開啟GPIOC時鐘并使能
}
//=============================================================================
//文件名稱:LED_Init
//功能概要:LED引腳的GPIO初始化
//參數(shù)說明:無
//函數(shù)返回:無
//=============================================================================
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct; //聲明GPIO初始化結(jié)構(gòu)體,聲明要在最前面
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //開啟GPIOA時鐘并使能
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1; //定義GPIO初始化結(jié)構(gòu)體的GPIO引腳
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //定義GPIO初始化結(jié)構(gòu)體的GPIO輸出模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //定義GPIO初始化結(jié)構(gòu)體的GPIO速率
GPIO_Init(GPIOA, &GPIO_InitStruct); //初始化GPIO
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12; //定義GPIO初始化結(jié)構(gòu)體的GPIO引腳
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //定義GPIO初始化結(jié)構(gòu)體的GPIO輸出模式,推挽輸出模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //定義GPIO初始化結(jié)構(gòu)體的GPIO速率
GPIO_Init(GPIOB, &GPIO_InitStruct); //初始化GPIO
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15; //定義GPIO初始化結(jié)構(gòu)體的GPIO引腳
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //定義GPIO初始化結(jié)構(gòu)體的GPIO輸出模式,推挽輸出模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //定義GPIO初始化結(jié)構(gòu)體的GPIO速率
GPIO_Init(GPIOC, &GPIO_InitStruct); //初始化GPIO
}
點擊下面兩個任意一個編譯
確保0錯誤,0警告。
四、硬件連接
? ? ? ? 1、USB 轉(zhuǎn) TTL 方式
? ? ? ? ? ? ? ? (1)、將STM32F103C8T6插入面包板,注意!一定要插深一點!確保C8T6的引腳能和面包板進行導電!!(筆者因為這個小細節(jié)沒注意,排查了好幾天的代碼、硬件,甚至以為是筆者焊接不到位,重新把板的引腳焊過...最后排查出來是面包板和開發(fā)板的引腳接觸不緊密沒導上電...血的眼淚...)
????????????????(2)、USB 轉(zhuǎn) TLL硬件插上電腦USB端口。
? ? ? ? ????????(3)、USB to TTL硬件和STM32F103C8T6連線。
? ? ? ? ? ? ? ? ? ? ? ? 跳線帽連接方式:UBOOT0 用1;UBOOT1用0。
? ? ? ? ? ? ? ? ? ? ? ? USB轉(zhuǎn)TTL連接方式:用杜邦線將USB to TTL的GND連開發(fā)板的GND、3.3V連3.3V、RXD連接PA9、TXD連接PA10
注意,下圖此處有小紅燈亮了,說明RXD連接PA9引腳連接可以導上電;如果是不亮的,則要檢查一下是否會導電。
LED小燈連接方式:根據(jù)代碼設定的GPIO端口,把LED小燈插到對應的引腳即可。筆者插的是A1、B12、C15引腳。注意!小燈泡會有高低腳,高的一側(cè)要插正極,低的一側(cè)插負極。
接地連接方式:用杜邦線把開發(fā)板上的G和面包板兩側(cè)的藍色負極行連接起來。
?最終連接效果:
? ? ? ? ? ? ? ? (4)、打開設備管理器,確保有USB-SERIAL CH340(COMx)(如果沒有顯示或顯示未知設備就去安裝一個CH340的驅(qū)動)
? ? ? ? ? ? ? ? ?(5)、打開FlyMCU,確保剛才端口是空閑狀態(tài)(一般來講,設備管理器識別的COM口號和FlyMCU的COM口號是一致的。這里解釋一下為什么這里的COM口號和上面不同,因為筆者沒有當時的截圖,下面這張圖時后來寫博客時補的圖...原來的端口電腦經(jīng)常識別有誤,所以插了另一個端口。)
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ?(6)、進行以下配置,并點擊三個小點...處,選擇工程編譯生成的.hex文件,點擊開始編程。
? ? ? ? ? ? ? ? ?(7)、別忘記按板上的Reset鍵,按了之后才會有反應。
?*常見問題:
????????1、未知USB設備(設備描述符請求失?。?/p>
? ? ? ?2、FlyMCU的Port端口顯示占用
解決方法:右鍵卸載這個設備,再重新插拔USB 轉(zhuǎn) TTL,多試幾次。筆者懷疑是USB轉(zhuǎn)TLL和拓展塢的USB口接觸不好導致的。
? ? ? ? 3、Fly MCU 出現(xiàn)無法打開串口
原因:說明電腦沒有識別到USB轉(zhuǎn)TTL的端口,請確保USB轉(zhuǎn)TTL已經(jīng)插上。如果確認插上,說明還是接觸不好的問題。
解決方法:重新插拔USB 轉(zhuǎn) TTL,多試幾次。(如果有條件,可以嘗試更換一個TTL)
????????4、無法打開串口COMx:Not Support Setting(bps/byte size etc)!
原因:RXD連接PA9沒有成功,需要檢查一下PA9引腳是否導電,可以看USB轉(zhuǎn)TTL上的小紅燈有沒有亮,沒亮就是沒導上電。
解決方法:1、更換TTL;2、更換杜邦線;3、插拔USB轉(zhuǎn)TTL;4、重新焊接PA9引腳;5、如果之前燒錄過其他程序,則嘗試一下按Reset后再試一次。
????????
? ? ? ?2、ST-LINK V2 01-0方式
???????????????(1)、將STM32F103C8T6插入面包板,注意!一定要插深一點!確保C8T6的引腳能和面包板進行導電??!
????????????????(2)、ST-LINK V2仿真編程器插上電腦USB端口。
????????????????(3)、ST-LINK V2仿真編程器和STM32F103C8T6連線。
? ? ? ? ? ? ? ? ? ? ? ? 跳線帽連接方式:UBOOT0 用0;UBOOT1用0。
? ? ? ? ? ? ? ? ? ? ? ? ST-LINK和電腦連接方式:(開發(fā)板上的DCLK就是ST-LINK上的CLK)
????????????????LED小燈連接方式:根據(jù)代碼設定的GPIO端口,把LED小燈插到對應的引腳即可。筆者插的是A1、B12、C15引腳。注意!小燈泡會有高低腳,高的一側(cè)要插正極,低的一側(cè)插負極。
????????????????接地連接方式:用杜邦線把開發(fā)板上的G和面包板兩側(cè)的藍色負極行連接起來。
?連接最終效果:
? ? ? ? (4)、打開設備管理器,確保有STM32 STLink (如果沒有顯示或顯示未知設備就去安裝一個STLink的驅(qū)動)
? ? ? ? (5)、打開Keil,在確認編譯過、0錯誤,0警告后點擊LOAD下載按鈕。
? ? ? ? ? ? ? ? 顯示下載成功信息。
? ? ? ? (6)、如果在Debug的Setting勾選了Reset and Run則直接可以看到燈亮現(xiàn)象;如果沒有勾選Reset and Run則需要再按一下開發(fā)板上的RESET按鍵才可以觀察到燈亮現(xiàn)象。
五、實驗效果
? ? ? ? 1、USB to TTL:
? ? ? ? 2、ST-LINK V2 :
文章來源:http://www.zghlxwxcb.cn/news/detail-779324.html
六、寫在最后
? ? ? ? 感謝文中所引用博客的作者提供了思路和幫助,再次感謝。文章來源地址http://www.zghlxwxcb.cn/news/detail-779324.html
到了這里,關于基于STM32F103C8T6以USB to TTL 和 ST-LINK V2兩種方式點亮LED小燈泡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!