|
我最近在學(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ī)源程序如下:
- /*****
- ** Descriptions:配置PG6為輸出,驅(qū)動(dòng)開發(fā)板上的LED指示燈D1以200毫秒的間隔閃爍
- **--------------------------------------------------------------------------------------------*/
- #include "stm32f10x.h"
- //delay這里報(bào)錯(cuò)的原因是:delay函數(shù)用匯編實(shí)現(xiàn)的,導(dǎo)致了MDK誤報(bào)。
- #include "delay.h"
- /***************************************************************************
- * 描 述 : 初始化單片機(jī)控制D1的引腳PG6,并將D1的初始狀態(tài)設(shè)置為熄滅
- * 參 數(shù) : 無
- * 返回值 : 無
- **************************************************************************/
- void led_init(void)
- {
- //定義IO初始化配置結(jié)構(gòu)體
- GPIO_InitTypeDef GPIO_InitStructure;
- //打開PA端口時(shí)鐘
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);
-
- //配置的IO是PG6
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- //IO口速度為50MHz
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- //配置為通用推挽輸出
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- //調(diào)用庫函數(shù)GPIO_Init()配置IO
- GPIO_Init(GPIOG, &GPIO_InitStructure);
- //設(shè)置D1初始化狀態(tài)為熄滅
- GPIO_SetBits(GPIOG,GPIO_Pin_6);
- }
- /***************************************************************************
- * 描 述 : 主函數(shù)
- * 參 數(shù) : 無
- * 返回值 : 無
- **************************************************************************/
- int main(void)
- {
- //初始化用于驅(qū)動(dòng)指示燈D1的引腳PG6
- led_init();
- //主循環(huán)
- while(1)
- {
- //調(diào)用庫函數(shù)GPIO_ResetBits()驅(qū)動(dòng)LED指示燈D1的引腳(PG6)輸出低電平,即點(diǎn)亮D1
- GPIO_ResetBits(GPIOG,GPIO_Pin_6);
- //軟件延時(shí)200ms
- sw_delay_ms(200);
- //調(diào)用庫函數(shù)GPIO_SetBits()驅(qū)動(dòng)LED指示燈D1的引腳(PG6)輸出高電平,即熄滅D1
- GPIO_SetBits(GPIOG,GPIO_Pin_6);
- //軟件延時(shí)200ms
- sw_delay_ms(200);
- }
- }
- /********************************************END FILE********************/
復(fù)制代碼
所有資料51hei提供下載:
led.7z
(192.91 KB, 下載次數(shù): 6)
2020-7-7 19:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|