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

QQ登錄

只需一步,快速開始

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

stm32的gpio口的介紹(交流和學(xué)習(xí))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:480680 發(fā)表于 2020-7-7 10:22 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
       我最近在學(xué)stm32,想和大家分享自己的學(xué)習(xí)成果,也和大家一起學(xué)習(xí)交流。之前學(xué)習(xí)過15的庫函數(shù)的套用,經(jīng)過一段時(shí)間摸索,我對(duì)stm32的使用有了基礎(chǔ)的了解。因?yàn)榘遄硬皇钦c(diǎn)原子和野火,所以有些不同。      每個(gè)板子視頻教學(xué)第一個(gè)介紹都是stm32的gipo口的介紹,這個(gè)io口跟51的io口定義全然不同,并且能配置自身頻率,而且有些定義用到了結(jié)構(gòu)體。而且stm32是32位的單片機(jī),內(nèi)部的32位寄存器太多,很難記住,所以建議使用庫函數(shù)的辦法,先學(xué)會(huì)套用,后來在更改參數(shù)或者做一些小項(xiàng)目的時(shí)候,對(duì)一些寄存器做一些更深入的理解。
     首先我們講一下gipo口void led_init(void)
{  
   GPIO_InitTypeDef  GPIO_InitStructure;    //調(diào)用結(jié)構(gòu)體

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);         //定義時(shí)鐘
         
   GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;                //定義哪個(gè)口輸出

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //輸出速率為50Mhz

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;             //定義為推挽輸出
        
   GPIO_Init(GPIOG, &GPIO_InitStructure);                            //調(diào)用庫函數(shù)配置io口

   GPIO_SetBits(GPIOG,GPIO_Pin_6);                                                //置一服務(wù)
}


   這個(gè)截圖你能看見這個(gè)是定義一個(gè)stm32的io口的操作過程,這個(gè)地方使用了結(jié)構(gòu)體,可以看到,這樣使調(diào)用更加明了。這里定義了io的pa時(shí)鐘,配置的是哪一個(gè)io口,輸出速率,輸出是推挽輸出。這些參數(shù),集合在一個(gè)函數(shù)中,使用更加明了簡(jiǎn)捷。感覺很方便。
   我提供一個(gè)燈亮小燈的程序?梢詤⒖家幌,有啥問題可以一起學(xué)習(xí)。我建了個(gè)群912803408.可以交流

單片機(jī)源程序如下:
  1. /*****
  2. ** Descriptions:配置PG6為輸出,驅(qū)動(dòng)開發(fā)板上的LED指示燈D1以200毫秒的間隔閃爍
  3. **--------------------------------------------------------------------------------------------*/
  4. #include "stm32f10x.h"
  5. //delay這里報(bào)錯(cuò)的原因是:delay函數(shù)用匯編實(shí)現(xiàn)的,導(dǎo)致了MDK誤報(bào)。
  6. #include "delay.h"

  7. /***************************************************************************
  8. * 描  述 : 初始化單片機(jī)控制D1的引腳PG6,并將D1的初始狀態(tài)設(shè)置為熄滅
  9. * 參  數(shù) : 無
  10. * 返回值 : 無
  11. **************************************************************************/
  12. void led_init(void)
  13. {
  14.    //定義IO初始化配置結(jié)構(gòu)體
  15.    GPIO_InitTypeDef  GPIO_InitStructure;
  16.    //打開PA端口時(shí)鐘
  17.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);         
  18.          
  19.          //配置的IO是PG6
  20.    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;               
  21.          //IO口速度為50MHz
  22.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  23.    //配置為通用推挽輸出
  24.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25.          //調(diào)用庫函數(shù)GPIO_Init()配置IO
  26.    GPIO_Init(GPIOG, &GPIO_InitStructure);       
  27.    //設(shè)置D1初始化狀態(tài)為熄滅       
  28.    GPIO_SetBits(GPIOG,GPIO_Pin_6);                                               
  29. }

  30. /***************************************************************************
  31. * 描  述 : 主函數(shù)
  32. * 參  數(shù) : 無
  33. * 返回值 : 無
  34. **************************************************************************/
  35. int main(void)
  36. {
  37.   //初始化用于驅(qū)動(dòng)指示燈D1的引腳PG6
  38.         led_init();       

  39.   //主循環(huán)       
  40.         while(1)
  41.         {
  42.                         //調(diào)用庫函數(shù)GPIO_ResetBits()驅(qū)動(dòng)LED指示燈D1的引腳(PG6)輸出低電平,即點(diǎn)亮D1
  43.                   GPIO_ResetBits(GPIOG,GPIO_Pin_6);  
  44.                   //軟件延時(shí)200ms
  45.                         sw_delay_ms(200);
  46.                   //調(diào)用庫函數(shù)GPIO_SetBits()驅(qū)動(dòng)LED指示燈D1的引腳(PG6)輸出高電平,即熄滅D1
  47.                         GPIO_SetBits(GPIOG,GPIO_Pin_6);          
  48.                   //軟件延時(shí)200ms
  49.                         sw_delay_ms(200);      
  50.         }
  51. }
  52. /********************************************END FILE********************/
復(fù)制代碼

所有資料51hei提供下載:
led.7z (192.91 KB, 下載次數(shù): 6)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表