一、新建工程:
1.Keil中新建工程,選擇開發板型號。
2.工程文件夾建立Start,Library等分類,復制模版工程中的文件到工程文件夾中。
3.在Keil中添加分組,添加文件。
4.工程選項設置:
c/c++中:Include Paths內聲明所有包含頭文件的分類文件夾(Start,Library等)
? ? ? ? ? ? ? ? Define內定義USE_STDPERIPH_DRIVER
Debug中:下拉列表選擇對應調試器
? ? ? ? ? ? ? ? ? Settings - Flash Download里選擇Reset and Run。
5.在main.c文件中編程即可。
#include "stm32f10x.h" ? ? ? ? ? ? ? ? ?// Device headerint main
{return 0;
}
二、GPIO:
1.GPIO介紹:
通用輸入輸出口。可配置為8種模式。引腳電平 0 - 3.3V。
2.系統結構:
在stm32中,掛載在APB2總線上。
名稱按照GPIOA,GPIOB等命名。
每個GPIO有16個引腳,編號0-15,GPIOA_0一般稱作PA0。
3.幾種模式介紹:
(1)上拉/下拉輸入:不接輸入時默認輸入為高/低電平。
(2)模擬輸入:GPIO無效,引腳直接接入ADC模塊(即輸入為模擬信號)
(3)開漏輸出:輸出時高電平為高阻態,低電平為VSS。
(4)推挽輸出:輸出時高電平為VDD,低電平為VSS。
?4.函數介紹:
(1)將GPIO使能:
//介紹:APB2總線時鐘使能函數
//參數1:需要時鐘信號的外設,具體名稱可右鍵函數找到定義查看
//(此次為RCC_APB2Periph_GPIOA,因為要點亮PA0口的LED)
//參數2:ENABLE or DISABLE
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
?(2)GPIO設置參數結構體:
?? ?//介紹:GPIO設置參數結構體
?? ?//結構體成員:Mode設置模式,Pin目標引腳,Speed設置輸出速度
?? ?//Mode值:GPIO_Mode_AIN模擬輸入,GPIO_Mode_IPD下拉輸入,GPIO_Mode_IPU上拉輸入,
?? ?//? ? ? ? ? ? ? ? GPIO_Mode_Out_OD開漏輸出,GPIO_Mode_Out_PP推挽輸出
?? ?//Pin值:GPIO_Pin_0到GPIO_Pin_15,GPIO_Pin_All(激活多個端口,用按位或)
? ? //Speed值:GPIO_Speed_50MHz(選這個就行)
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
(3)告訴GPIO參數:
//介紹:GPIO初始化函數
//參數1:要設置的GPIO
//參數2:一個結構體,包含GPIO的設置參數
GPIO_Init(GPIOA, &GPIO_InitStructure);
(4)寫入目標引腳的值:?? ?
//介紹:設置GPIO引腳的值,set為置1,reset為置0
//參數:GPIOx,目標引腳
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_13);
?//參數:GPIOx,目標引腳,Bit_RESET或Bit_SET
?//參數:GPIOx,對應值,低位為PA0,高位為PA15
GPIO_WriteBit(GPIOA,GPIO_Pin_13,Bit_SET);
GPIO_Write(GPIOA,0x0001);
三、LED燈閃爍:
1.連線圖:
2.組合代碼:
#include "stm32f10x.h" // Device header
#include "Delay.h"int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);while (1){GPIO_ResetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);GPIO_SetBits(GPIOA, GPIO_Pin_0);Delay_ms(500);}
}
四、蜂鳴器:
注意:A15,B3,B4為調試端口,不要使用。
1.接線圖:
?
2.蜂鳴器介紹:
低電平響,高電平不響。代碼原理同上。