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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32筆記之十二:時(shí)鐘不息工作不止,systic時(shí)鐘應(yīng)用

          STM32筆記之十二:時(shí)鐘不息工作不止,systic時(shí)鐘應(yīng)用

          作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
          a)目的:使用系統(tǒng)時(shí)鐘來(lái)進(jìn)行兩項(xiàng)實(shí)驗(yàn)——周期執(zhí)行代碼與精確定時(shí)延遲。

          b)初始化函數(shù)定義:

          本文引用地址:http://www.ex-cimer.com/article/201611/322070.htm

          void SysTick_Configuration(void);

          c)初始化函數(shù)調(diào)用:

          SysTick_Configuration();

          d)初始化函數(shù):

          void SysTick_Configuration(void)

          {

          SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//時(shí)鐘除8

          SysTick_SetReload(250000);//計(jì)數(shù)周期長(zhǎng)度

          SysTick_CounterCmd(SysTick_Counter_Enable);//啟動(dòng)計(jì)時(shí)器

          SysTick_ITConfig(ENABLE);//打開(kāi)中斷

          }

          e)在NVIC的初始化函數(shù)里面增加以下代碼打開(kāi)相關(guān)中斷:

          NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 1, 0);//中斷等級(jí)設(shè)置,一般設(shè)置的高一些會(huì)少受其他影響

          f)在stm32f10x_it.c文件中找到void SysTickHandler函數(shù)

          void SysTickHandler(void)

          {

          執(zhí)行代碼

          }

          g)簡(jiǎn)單應(yīng)用:精確延遲函數(shù),因?yàn)?strong>systic中斷往往被用來(lái)執(zhí)行周期循環(huán)代碼,所以一些例程中使用其中斷的啟動(dòng)和禁止來(lái)編寫(xiě)的精確延時(shí)函數(shù)實(shí)際上不實(shí)用,我自己編寫(xiě)了精確計(jì)時(shí)函數(shù)反而代碼更精簡(jiǎn),思路更簡(jiǎn)單。思路是調(diào)用后,變量清零,然后使用時(shí)鐘來(lái)的曾變量,不斷比較變量與延遲的數(shù)值,相等則退出函數(shù)。代碼和步驟如下:

          i.定義通用變量:u16 Tic_Val=0; //變量用于精確計(jì)時(shí)

          ii.在stm32f10x_it.c文件中相應(yīng)定義:

          extern u16 Tic_Val;//在本文件引用MAIN.c定義的精確計(jì)時(shí)變量

          iii.定義函數(shù)名稱:void Tic_Delay(u16 Tic_Count);//精確延遲函數(shù)

          iv.精確延時(shí)函數(shù):

          void Tic_Delay(u16 Tic_Count)//精確延時(shí)函數(shù)

          {Tic_Val=0;//變量清零

          while(Tic_Val != Tic_Count){printf("");}//計(jì)時(shí)

          }

          v.在stm32f10x_it.c文件中void SysTickHandler函數(shù)里面添加

          Tic_Val++;//變量遞增

          vi.調(diào)用代碼:Tic_Delay(10);//精確延時(shí)

          vii.疑問(wèn):如果去掉計(jì)時(shí)行那個(gè)沒(méi)用的printf("");函數(shù)將停止工作,這個(gè)現(xiàn)象很奇怪


          評(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); })();