<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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


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

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

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

          用法:voidEXTI_Configuration(void)

          {

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

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

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

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

          EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

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

          EXTI_InitStructure.EXTI_LineCmd=ENABLE;//啟動(dòng)中斷的接收

          EXTI_Init(&EXTI_InitStructure);//外部設(shè)備中斷啟動(dòng)

          }



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

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

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

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

          基礎(chǔ)應(yīng)用1,精確計(jì)時(shí)的延時(shí)子函數(shù)。推薦使用的代碼。

          用法:

          staticvu32TimingDelay;//全局變量聲明

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

          {

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

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

          SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

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

          SysTick_SetReload(9000);//重置時(shí)間1毫秒(以72MHz為基礎(chǔ)計(jì)算)

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

          }

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

          {

          SysTick_CounterCmd(SysTick_Counter_Enable);//systic開始計(jì)時(shí)



          TimingDelay=nTime;//計(jì)時(shí)長(zhǎng)度賦值給遞減變量

          while(TimingDelay!=0);//檢測(cè)是否計(jì)時(shí)完成



          SysTick_CounterCmd(SysTick_Counter_Disable);//關(guān)閉計(jì)數(shù)器

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

          }

          voidTimingDelay_Decrement(void)

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

          {

          if(TimingDelay!=0x00)//檢測(cè)計(jì)數(shù)變量是否達(dá)到0

          {

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

          }

          }

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

          voidDelay(vu32nCount)//簡(jiǎn)單延時(shí)函數(shù)

          {

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

          }

          當(dāng)延時(shí)較長(zhǎng),又不需要精確計(jì)時(shí)的時(shí)候可以使用嵌套循環(huán):

          voidDelay(vu32nCount)//簡(jiǎn)單的長(zhǎng)時(shí)間延時(shí)函數(shù)

          {inti;//聲明內(nèi)部遞減變量

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

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

          }

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

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

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

          用法:voidGPIO_Configuration(void)

          {

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

          GPIO_InitStructure.GPIO_Pin=GPIO_Pin_標(biāo)號(hào)|GPIO_Pin_標(biāo)號(hào);

          //管腳位置定義,標(biāo)號(hào)可以是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屬性必須相同,默認(rèn)的GPIO參數(shù)為:ALL,2MHz,F(xiàn)LATING。如果其中任意一行與前一組相應(yīng)設(shè)置相同,那么那一行可以省略,由此推論如果前面已經(jīng)將此行參數(shù)設(shè)定為默認(rèn)參數(shù)(包括使用GPIO_InitTypeDefGPIO_InitStructure代碼),本組應(yīng)用也是默認(rèn)參數(shù)的話,那么也可以省略。以下重復(fù)這個(gè)過程直到所有應(yīng)用的管腳全部被定義完畢。

          ……

          }

          基礎(chǔ)應(yīng)用2,向管腳寫入0或1

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

          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32學(xué)前班教

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();