新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32學前班教程之六:這些代碼大家都用得到

STM32學前班教程之六:這些代碼大家都用得到

作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏


1、閱讀exti:外部設備中斷函數(shù)

我的理解——外部設備通過引腳給出的硬件中斷,也可以產(chǎn)生軟件中斷,19個上升、下降或都觸發(fā)。EXTI0~EXTI15連接到管腳,EXTI線16連接到PVD(VDD監(jiān)視),EXTI線17連接到RTC(鬧鐘),EXTI線18連接到USB(喚醒)。

基礎應用1,設定外部中斷初始化函數(shù)。按需求,不是必須代碼。

用法:voidEXTI_Configuration(void)

{

EXTI_InitTypeDefEXTI_InitStructure;//外部設備中斷恢復默認參數(shù)

EXTI_InitStructure.EXTI_Line=通道1|通道2;

//設定所需產(chǎn)生外部中斷的通道,一共19個。

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//產(chǎn)生中斷

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

//上升下降沿都觸發(fā)

EXTI_InitStructure.EXTI_LineCmd=ENABLE;//啟動中斷的接收

EXTI_Init(&EXTI_InitStructure);//外部設備中斷啟動

}



2、閱讀dma:通過總線而越過CPU讀取外設數(shù)據(jù)

我的理解——通過DMA應用可以加速單片機外設、存儲器之間的數(shù)據(jù)傳輸,并在傳輸期間不影響CPU進行其他事情。這對于入門開發(fā)基本功能來說沒有太大必要,這個內容先行跳過。

3、閱讀systic:系統(tǒng)定時器

我的理解——可以輸出和利用系統(tǒng)時鐘的計數(shù)、狀態(tài)。

基礎應用1,精確計時的延時子函數(shù)。推薦使用的代碼。

用法:

staticvu32TimingDelay;//全局變量聲明

voidSysTick_Config(void)//systick初始化函數(shù)

{

SysTick_CounterCmd(SysTick_Counter_Disable);//停止系統(tǒng)定時器

SysTick_ITConfig(DISABLE);//停止systick中斷

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

//systick使用HCLK作為時鐘源,頻率值除以8。

SysTick_SetReload(9000);//重置時間1毫秒(以72MHz為基礎計算)

SysTick_ITConfig(ENABLE);//開啟systic中斷

}

voidDelay(u32nTime)//延遲一毫秒的函數(shù)

{

SysTick_CounterCmd(SysTick_Counter_Enable);//systic開始計時



TimingDelay=nTime;//計時長度賦值給遞減變量

while(TimingDelay!=0);//檢測是否計時完成



SysTick_CounterCmd(SysTick_Counter_Disable);//關閉計數(shù)器

SysTick_CounterCmd(SysTick_Counter_Clear);//清除計數(shù)值

}

voidTimingDelay_Decrement(void)

//遞減變量函數(shù),函數(shù)名由“stm32f10x_it.c”中的中斷響應函數(shù)定義好了。

{

if(TimingDelay!=0x00)//檢測計數(shù)變量是否達到0

{

TimingDelay--;//計數(shù)變量遞減

}

}

注:建議熟練后使用,所涉及知識和設備太多,新手出錯的可能性比較大。新手可用簡化的延時函數(shù)代替:

voidDelay(vu32nCount)//簡單延時函數(shù)

{

for(;nCount!=0;nCount--);(循環(huán)變量遞減計數(shù))

}

當延時較長,又不需要精確計時的時候可以使用嵌套循環(huán):

voidDelay(vu32nCount)//簡單的長時間延時函數(shù)

{inti;//聲明內部遞減變量

for(;nCount!=0;nCount--)//遞減變量計數(shù)

{for(i=0;i<0xffff;i++)}//內部循環(huán)遞減變量計數(shù)

}

4、閱讀gpio:I/O設置函數(shù)

我的理解——所有輸入輸出管腳模式設置,可以是上下拉、浮空、開漏、模擬、推挽模式,頻率特性為2M,10M,50M。也可以向該管腳直接寫入數(shù)據(jù)和讀取數(shù)據(jù)。

基礎應用1,gpio初始化函數(shù)。所有程序必須。

用法:voidGPIO_Configuration(void)

{

GPIO_InitTypeDefGPIO_InitStructure;//GPIO狀態(tài)恢復默認參數(shù)

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_標號|GPIO_Pin_標號;

//管腳位置定義,標號可以是NONE、ALL、0至15。

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;//輸出速度2MHz

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模擬輸入模式

GPIO_Init(GPIOC,&GPIO_InitStructure);//C組GPIO初始化

//注:以上四行代碼為一組,每組GPIO屬性必須相同,默認的GPIO參數(shù)為:ALL,2MHz,F(xiàn)LATING。如果其中任意一行與前一組相應設置相同,那么那一行可以省略,由此推論如果前面已經(jīng)將此行參數(shù)設定為默認參數(shù)(包括使用GPIO_InitTypeDefGPIO_InitStructure代碼),本組應用也是默認參數(shù)的話,那么也可以省略。以下重復這個過程直到所有應用的管腳全部被定義完畢。

……

}

基礎應用2,向管腳寫入0或1

用法:GPIO_WriteBit(GPIOB,GPIO_Pin_2,(BitAction)0x01);//寫入1

上一頁 1 2 下一頁

關鍵詞: STM32學前班教

評論


技術專區(qū)

關閉