手機(jī)端網(wǎng)站建站品牌營銷案例分析
1、簡介
STM32是一系列由STMicroelectronics(瑞士意法半導(dǎo)體)公司設(shè)計(jì)和生產(chǎn)的32位微控制器產(chǎn)品線。這些微控制器基于ARM Cortex-M內(nèi)核,并具有高性能、低功耗和多種外設(shè)接口的特點(diǎn)。STM32處理器被廣泛應(yīng)用于各種嵌入式系統(tǒng)領(lǐng)域,包括工業(yè)控制、消費(fèi)電子、汽車電子、物聯(lián)網(wǎng)等。
STM32處理器系列有多個(gè)型號,包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7、STM32L0、STM32L1、STM32L4等。不同型號的STM32處理器具有不同的性能和功能特點(diǎn),以適應(yīng)不同應(yīng)用場景的需求。
STM32處理器采用了豐富的外設(shè)接口,包括多個(gè)通用輸入輸出(GPIO)引腳、通用定時(shí)器(TIM)、通用串行總線(USART、SPI、I2C)、模擬到數(shù)值轉(zhuǎn)換器(ADC)等。這些外設(shè)接口可以連接到各種外部設(shè)備,從而實(shí)現(xiàn)不同應(yīng)用的功能要求。
此外,STM32處理器還提供了豐富的開發(fā)工具和軟件支持,包括集成開發(fā)環(huán)境(IDE)、編譯器、調(diào)試器等。開發(fā)者可以使用這些工具進(jìn)行應(yīng)用程序的開發(fā)、調(diào)試和部署。
總的來說,STM32處理器是一種功能強(qiáng)大、靈活性高的32位微控制器,適用于各種嵌入式系統(tǒng)應(yīng)用。它具有低功耗、高性能和豐富的外設(shè)接口,以及完善的開發(fā)工具和軟件支持。
2、新建工程模板
(1)庫函數(shù)開發(fā)方式
由于STM32F103C8T6芯片的寄存器眾多,名字難記,因此不再適合寄存器方式開發(fā),而采用固件庫的形式開發(fā),就是底層對寄存器的操作通過函數(shù)封裝,我們只需要記住函數(shù)的功能即可,當(dāng)然對于初學(xué)者,函數(shù)名字也不是太好記,不過用的多了,自然就記住了。
我們先建立一個(gè)工程模板,將固件庫資料拷貝到工程模板里。
(2)Keil5新建工程
選擇器件
這個(gè)新建工程小助手頁面直接叉掉即可。
工程就新建好了。
(3)相關(guān)固件庫文件拷貝到工程目錄下Start文件夾
a、在工程模板目錄里面新建一個(gè)文件夾start,存放STM32的啟動(dòng)文件。將\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面所有的文件都復(fù)制到Start里面
b、將\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面的stm32f10x.h(內(nèi)核外圍設(shè)備的寄存器地址頭文件)、system_stm32f10x.c、system_stm32f10x.h(系統(tǒng)時(shí)鐘配置文件)這三個(gè)文件也復(fù)制到Start里面
c、將工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里面的內(nèi)核的寄存器描述及配置文件也復(fù)制到Start文件夾里面。
(4)keil MDK工程資源管理器
將Target1下面的SourceGroup1改名為Start,添加前面的文件到該Start下。
添加下面6個(gè)文件到Start下。注意啟動(dòng)文件startup開頭的文件的名字后綴不要選錯(cuò),啟動(dòng)文件只能有一個(gè)。
將頭文件路徑添加MDK工程配置里面,點(diǎn)擊魔術(shù)棒。
(4)User文件夾放置main函數(shù)
按照在工程目錄建Start的方式,建User。
(5)編譯工程
在main函數(shù)里面插入頭文件"stm32f10x.h" ?
3、通過操作寄存器來點(diǎn)亮LED
以上模版只是添加了內(nèi)核啟動(dòng)文件,時(shí)鐘、內(nèi)核頭文件,尚未添加固件庫,可以通過操作寄存器來進(jìn)行開發(fā)。
(1)配置STlink下載方式,就是將asf(AXF文件是一種ARM交叉編譯器生成的可執(zhí)行文件格式,用于嵌入式系統(tǒng)開發(fā)。它包含了可執(zhí)行程序的機(jī)器指令、數(shù)據(jù)以及其他相關(guān)的調(diào)試信息。AXF文件可以被加載到ARM處理器上運(yùn)行。在ARM開發(fā)中,AXF文件通常會(huì)通過調(diào)試工具進(jìn)行調(diào)試和分析。)加載到芯片內(nèi)在線調(diào)試。也可以同時(shí)生成hex二進(jìn)制文件。
(2)點(diǎn)亮LED燈的代碼(PC13輸出低電平點(diǎn)亮)
#include "stm32f10x.h" // Device headerint main()
{RCC->APB2ENR=0x00000010;//打開GPIOC的時(shí)鐘GPIOC->CRH=0x00300000; //配置GPIOC13的輸出模式為推挽輸出50MHzGPIOC->ODR=0x00000000; //點(diǎn)亮PC13燈while(1){}
}
(3)仿真圖現(xiàn)象
4、添加庫函數(shù)
(1)Library文件夾
新建Library文件夾存放庫函數(shù)文件。
將\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\
Libraries\STM32F10x_StdPeriph_Driver\src下面所有的C文件復(fù)制到Library文件夾
將\工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\
Libraries\STM32F10x_StdPeriph_Driver\inc下面所有的H文件復(fù)制到Library文件夾
(2)添加Library文件夾到工程目錄
(3)將配置文件、中斷文件復(fù)制到User文件夾
將工程模版\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\
STM32F10x_StdPeriph_Template里面的配置文件、中斷文件復(fù)制到User文件夾內(nèi),并在keil里面添加到工程中。
將stm32f10x.h里面的USE_STDPERIPH_DRIVER,放到工程配置選項(xiàng)里。
5、操作庫函數(shù)熄滅LED
#include "stm32f10x.h" // Device headerint main()
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);while(1){}
}
6、建立System文件夾存放用戶自定義函數(shù)
(1)將延時(shí)函數(shù)復(fù)制到System文件夾
(2)將System文件夾包含到工程文件中
(3)添加文件到工程文件管理器
(4)編寫LED(PC13)燈閃爍代碼
#include "stm32f10x.h" // Device header
#include "delay.h" int main()
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);delay_init();while(1){GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)0);delay_ms(50);GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)1);delay_ms(50);}
}
在Proteus仿真圖或者硬件上測試即可。
最后可以刪除工程模板里面的固件庫文件夾,以后每次新建工程不需要再做了,只要復(fù)制這個(gè)文件夾即可。
?