www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序員小哈
  • 學(xué)習(xí)目標(biāo)

  • STM32F103C8T6芯片簡(jiǎn)介

  • 核心板原理圖

  • 搭建流水燈電路

  • 修改工程模板

  • 代碼實(shí)現(xiàn)

  • 成果展示

  • 資料獲取

  • 推薦閱讀


后臺(tái)網(wǎng)友建議制作一個(gè)流水燈,正好發(fā)現(xiàn)自己有之前購(gòu)買的STM32F103C8T6核心板,今天搭建一個(gè)流水燈,正好學(xué)習(xí)一下STM32 GPIO輸出如何實(shí)現(xiàn),將來(lái)驅(qū)動(dòng)蜂鳴器、繼電器等都會(huì)使用的。


流水燈相當(dāng)于計(jì)算機(jī)語(yǔ)言中的“Hello World”,照著做一遍,實(shí)現(xiàn)了它,基本你就入門了。


學(xué)習(xí)目標(biāo)

  • STM32F103C8T6最小系統(tǒng)板的使用

  • 面包板搭建流水燈電路的方法

  • 將STM32F103RCT6工程模板修改為STM32F103C8T6的工程模板

  • 熟悉STM32 單片機(jī)GPIO作為輸出的使用方法

STM32F103C8T6芯片簡(jiǎn)介

根據(jù)STM32&STM8產(chǎn)品型號(hào)命名規(guī)則(參考:STM32單片機(jī)最小系統(tǒng)詳解)可知:
STM32F103C8T6這個(gè)命名中:

  • STM32代表STM32家族,32位MCU;

  • F代表產(chǎn)品類型為基礎(chǔ)型;

  • 103代表特定功能為STM32基礎(chǔ)型;

  • C代表引腳數(shù)為48&49引腳;

  • 8代表內(nèi)存容量為64KB;

  • T代表封裝為QFP;

  • 6代表溫度范圍為-40到+85℃。

核心板原理圖


通過原理圖我們可知:

  • 板子供電有兩種方式:

    1. 通過U3 USB-micro接口提供5V供電,然后經(jīng)過板載的LDO芯片轉(zhuǎn)為VCC3V3;

    2. 通過P2 接口,即SWD下載接口中的VCC3V3給核心板供電。

  • 核心板上有兩個(gè)LED,其中一個(gè)為電源指示燈PWR,另外一個(gè)LED與PC13引腳相連,當(dāng)PC13置高時(shí),LED滅;當(dāng)PC13置低時(shí),LED亮;

  • 核心板上的跳線是為了選擇啟動(dòng)模式使用。我們?yōu)榱俗尦绦蛞灾鏖W存存儲(chǔ)器作為啟動(dòng)區(qū)域,需要將BOOT0置低,BOOT1隨意,此種啟動(dòng)模式是最常用的用戶FLASH啟動(dòng),為默認(rèn)啟動(dòng)模式;

  • 核心板上的按鍵為RESET復(fù)位按鍵;

  • P2接口為SWD下載模式對(duì)應(yīng)的引腳接口;


搭建流水燈電路

  1. 準(zhǔn)備元器件

注意:
電阻使用的是2K,作為限流使用;
LED注意正負(fù)極,直插發(fā)光二極管,引腳長(zhǎng)的為正極,短的為負(fù)極;如果引腳被剪過了,一樣長(zhǎng)了,查看發(fā)光二極管管體內(nèi)部金屬極大小,金屬極較小的是正極,大的片狀的是負(fù)極。

  1. 搭建電路
    按照如下原理圖搭建電路


搭建完畢效果圖


修改工程模板

基于STM32固件庫(kù)的MDK5工程建立基礎(chǔ)上,將STM32F103RCT6工程模板修改為STM32F103C8T6的工程模板。

修改點(diǎn):

  1. 替換啟動(dòng)文件,將startup_stm32f10x_hd.s更換為startup_stm32f10x_md.s,startup_stm32f10x_md.s為中等容量產(chǎn)品使用的啟動(dòng)文件,對(duì)應(yīng)FLASH的大小范圍為:64K≤FLASH≤128K。

  1. 修改全局宏定義,將STM32F10X_HD修改為STM32F10X_MD。



  1. 更改使用的芯片型號(hào)



  1. 設(shè)置下載的Flash容量


注意:
網(wǎng)上說STM32F103C8T6和STM32F103CBT6 是在同一圓晶上制造的,但測(cè)試時(shí),只測(cè)試手冊(cè)提供的參數(shù)范圍所包含的內(nèi)容,也就意味著 STM32F103C8T6也是128k Flash,只不過只測(cè)試了前面64k,然后打上 STM32F103C8T6標(biāo)注(當(dāng)然內(nèi)部就寫上 C8T6 的 ID);所以我們?cè)谔砑覨lash的時(shí)候,只能找到128K的STM32F103,而找不到64K的Flash。


代碼實(shí)現(xiàn)

  1. 設(shè)置PA5、PA6、PA7為輸出


GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);
  1. 初始化GPIO為高電平,高電平的時(shí)候,LED滅

GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);
  1. 流水燈代碼具體實(shí)現(xiàn)

#include "stm32f10x.h" void Delay(u32 count){ u32 i=0; for(;i} int main(void){ GPIO_InitTypeDef  GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);  GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7);  while(1) { GPIO_ResetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_ResetBits(GPIOA,GPIO_Pin_6); GPIO_SetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_SetBits(GPIOA,GPIO_Pin_6); GPIO_ResetBits(GPIOA,GPIO_Pin_7); Delay(1000000);Delay(1000000);Delay(1000000); }}
		

成果展示

?

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉