久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2137|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32的開發(fā)環(huán)境與簡(jiǎn)單工程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:470360 發(fā)表于 2019-3-1 20:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)驗(yàn)一、STM32的開發(fā)環(huán)境與簡(jiǎn)單工程
一、實(shí)驗(yàn)?zāi)康?br /> 1、熟悉STM32開發(fā)板的開發(fā)環(huán)境;
2、熟悉MDK創(chuàng)建和配置STM32工程項(xiàng)目的基本流程;
3、熟悉STM32官方庫的應(yīng)用;
4、規(guī)范編程格式。
二、實(shí)驗(yàn)內(nèi)容
本次實(shí)驗(yàn)配置MDK集成開發(fā)環(huán)境,新建一個(gè)簡(jiǎn)單的工程文件,添加STM32官方庫并配置工程,編譯運(yùn)行這個(gè)工程文件。下載已經(jīng)編譯好的文件到開發(fā)板中運(yùn)行。學(xué)會(huì)在程序中設(shè)置斷點(diǎn),觀察系統(tǒng)內(nèi)存和變量,為調(diào)試應(yīng)用程序打下基礎(chǔ)。
三、預(yù)備知識(shí)
基本單片機(jī)硬件知識(shí)、單片機(jī)軟件編程語言、程序創(chuàng)建和調(diào)試的基本方法。
四、實(shí)驗(yàn)設(shè)備及工具
硬件:STM32開發(fā)平臺(tái)
軟件:STM32官方庫;PC機(jī)操作系統(tǒng)Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發(fā)環(huán)境;串口轉(zhuǎn)usb驅(qū)動(dòng)。
五、實(shí)驗(yàn)步驟
1、在準(zhǔn)備存放工程文件的目錄下創(chuàng)建一新文件夾,命名為Proj_GPIO;在Proj_GPIO文件夾里面分別再創(chuàng)建四個(gè)文件夾:CMSIS、USER、LIB、OBJ。如圖1。
其中CMSIS(Cortex Microcontroller SoftwareInterface Standard)用于存放Cortex-M 處理器系列的與供應(yīng)商無關(guān)的軟件抽象層和啟動(dòng)相關(guān)的代碼文件;
USER用于存放我們自己編寫的代碼文件(含自己移植的底層驅(qū)動(dòng)),還有MDK工程;
LIB存放所有的官方底層驅(qū)動(dòng)庫文件;
OBJ用于工程輸出的過程文件和最終的二進(jìn)制文件。
                              
圖1
2、將官方庫STM32F10x_StdPeriph_Lib_V3.5.0.rar解壓。
1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的所有文件都到第一步所創(chuàng)建的CMSIS文件夾中;
2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目錄下的文件(目錄inc和scr)復(fù)制到第一步創(chuàng)建的LIB文件夾中;
3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目錄下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三個(gè)文件復(fù)制到USER文件夾中。
  3、打開MDK軟件,新建一個(gè)工程Proj_GPIO保存到Proj_GPIO/USER中。CPU選擇STM32F103ZE,如圖2;
圖2
4、新建一個(gè)空文檔main.c保存到USER中,然后根據(jù)絕對(duì)路徑將文件對(duì)應(yīng)添加到工程中,如右圖。
5、配置工程屬性,右鍵點(diǎn)擊工程文件中的Target 1選擇Options for Target ‘Target 1’打開工程選項(xiàng)對(duì)話框。做如下修改:
1)Output選項(xiàng)勾選Create HEX File,然后點(diǎn)擊Select Folder for Objects按鈕定位輸出文件保存目錄到工程的OBJ文件;
2)Listing選項(xiàng),同樣點(diǎn)擊Select Folder for Listings定位輸出文件保存目錄到工程的OBJ文件;
  
3)C/C++選項(xiàng),Define中填入STM32F10X_HD, USE_STDPERIPH_DRIVER系統(tǒng)的兩個(gè)基本宏定義;配置Include Paths屬性,加入工程中包含頭文件的目錄;如右圖
4)后面Debug和Utilities兩個(gè)選項(xiàng)如果使用J-link或者其他調(diào)試器則需要做對(duì)應(yīng)的修改,否則不用。
6、根據(jù)實(shí)驗(yàn)任務(wù)硬件原理圖編寫代碼實(shí)現(xiàn)四個(gè)按鍵控制led燈亮滅。
1)其中用戶按鍵和LED原理圖如下:
  
圖5
2)根據(jù)原理圖初始化各IO引腳,編寫控制函數(shù),然后主函數(shù)中調(diào)用。

        
/*********************************************************************
   
* 函數(shù)名稱:io_init
   
* 函數(shù)功能:初始化PA0 PE2 PE3 PE4為輸入口PE5 PB5為輸出口
   
* 參數(shù): 無
   
*********************************************************************/
   
void    io_init()
   
{
   
    GPIO_InitTypeDef gpin_init_struct;
   
    //使能每個(gè)IO口的時(shí)鐘
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,    ENABLE);
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,    ENABLE);
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,    ENABLE);
   
   
   
    gpin_init_struct.GPIO_Pin = GPIO_Pin_0;             //PA0引腳
   
    gpin_init_struct.GPIO_Speed =    GPIO_Speed_2MHz;      //IO速度為2MHz
   
    gpin_init_struct.GPIO_Mode =    GPIO_Mode_IPD;         //下拉模式
   
    GPIO_Init(GPIOA, &gpin_init_struct);                //A口按鍵
   
   
    gpin_init_struct.GPIO_Pin = GPIO_Pin_5;
   
    gpin_init_struct.GPIO_Speed =    GPIO_Speed_2MHz;
   
    gpin_init_struct.GPIO_Mode =    GPIO_Mode_Out_PP;
   
    GPIO_Init(GPIOB, &gpin_init_struct);                //B口led1
   
    GPIO_Init(GPIOE, &gpin_init_struct);                //E口led2
   
   
    gpin_init_struct.GPIO_Pin =    GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
   
    gpin_init_struct.GPIO_Speed =    GPIO_Speed_2MHz;
   
    gpin_init_struct.GPIO_Mode =    GPIO_Mode_IPU;         //上拉模式
   
    GPIO_Init(GPIOE, &gpin_init_struct);                //E口按鍵
   
}
   
   
  



        
/*****************************************************
   
* 函數(shù)名稱: key_led
   
* 函數(shù)功能: 根據(jù)按鍵情況控制led燈的亮滅 s1 s2控制led1;s3 s4控制led2   
   
* 參數(shù): 無
   
* 其他:其中LED1_ON LED1_OFF LED2_ON LED2_OFF為全局宏定義
   
********************************************************/
   
void    key_led()
   
{
   
    if(GPIO_ReadInputDataBit(GPIOE,    GPIO_Pin_4)==0) LED1_ON;
   
    if(GPIO_ReadInputDataBit(GPIOE,    GPIO_Pin_3)==0) LED1_OFF;
   
    if(GPIO_ReadInputDataBit(GPIOE,    GPIO_Pin_2)==0) LED2_ON;
   
    if(GPIO_ReadInputDataBit(GPIOA,    GPIO_Pin_0)==1) LED2_OFF;
   
}
   
   
         
        
#include    "stm32f10x.h"
   
#define    LED2_ON GPIO_ResetBits(GPIOB,    GPIO_Pin_5)
   
#define    LED2_OFF    GPIO_SetBits(GPIOB,    GPIO_Pin_5)
   
#define LED1_ON GPIO_ResetBits(GPIOE, GPIO_Pin_5)
   
#define    LED1_OFF    GPIO_SetBits(GPIOE,    GPIO_Pin_5)
   
   
void    io_init();
   
void    key_led();
   
   
int main()
   
{
   
    io_init();
   
    while(1)
   
    {
   
        key_led();
   
    }
   
}
   
   
  

3)代碼編寫完成后編譯鏈接,通過下載軟件將hex文件下載到實(shí)驗(yàn)板中運(yùn)行驗(yàn)證。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本不卡高清视频 | 日韩精品一区二区三区 | 国产精品1区2区 | 欧美精品免费观看二区 | 国产精品久久久久aaaa | 91久久久久久 | 中文字幕在线观看第一页 | 久久精品亚洲 | 韩国主播午夜大尺度福利 | 成人毛片在线观看 | 涩涩视频在线观看 | 91在线看| 欧美性网 | 麻豆国产一区二区三区四区 | 色综合久| 国产成人精品久久 | 精品毛片在线观看 | 久久精品中文字幕 | 麻豆av免费观看 | 欧美不卡在线 | 欧美一级网站 | 欧美成人免费在线视频 | 一区中文字幕 | 欧美在线a | 日本不卡免费新一二三区 | 国产欧美精品一区二区三区 | 日韩视频一区二区在线 | 欧美三级成人理伦 | 久久久久久网 | 一区二区三区免费在线观看 | 久久综合久久久 | 亚洲区一区二 | 午夜在线视频 | 国产精品久久一区 | 伊人久久综合 | 最新国产视频 | 不卡一区二区三区四区 | 四虎影院在线免费观看 | 欧美日韩一区在线播放 | 日韩欧美国产不卡 | 国产小视频自拍 |