本文來源電子發燒友社區,作者:川楠, 帖子地址:https://bbs.elecfans.com/jishu_2241443_1_1.html
前言
大家好。
首先,感謝南京中科微提供的CSM32RV20開發板,同時也感謝發燒友提供的試用平臺。
這次測試的是定時器,測試目標:使用定時器,周期性的控制LED燈。
代碼編程
還是一樣的,按照官方的教程,建立DEMO程序,查看main.c文件。
基本上定時器的相關代碼就在這里的,但是定時器的中斷函數呢?函數入口呢?
這里可以直接查看啟動文件。
按照這個函數名稱,查找:ctrl+f(基本上絕大多說的查找命令都是這個快捷鍵組合)
這樣你就能找到中斷函數:
在中斷函數里,交替改變的是PA12引腳的電平變化。
到了這里,我基本上有了編程的思路的,這還在沒有看數據手冊的情況下:
具體代碼如下:
復制代碼
程序編譯下載:
結果燈好像沒有什么變化?就一個紅燈常亮?
不要著急,使用示波器,或者邏輯分析儀看一下,PA12引腳的電平,你就明白了。
頻率都達到了500HZ了,肉眼能看到,才是怪事。
到了這里,實驗目的是達到了。但是通常,我們是需要改變定時的周期/頻率的,所以,這里就需要仔細的研究下定時器初始化了。
PSC-預分頻,值為31;ARR-自動重裝寄存器,值為1000。
結合系統時鐘是32MHZ,所以定時器的頻率分頻應該是31+1,所以計時時鐘為1MHZ。
在這個頻率下,計數1000個,也就是1KHZ,1MS,所以,定時器的中斷周期是1MS,LED的頻率就是500HZ了。
如果是這樣的話,ARR的值應該是1000-1=999才是更精確的1MS定時中斷啊。不過都是小問題。
調整驗證一下:
將定時器中斷周期改為500MS,使得LED1S閃爍一次。更改Timer1_UpCounting_Mode_Init();
可以看到預分頻的值范圍是0-65535;
定時器為16位定時器,計數范圍也是0-65535;
所以修改定時器初始化值為:
在抓PA12波形:
試用感受
CSM32整體用起來,感覺還是不錯基本上不用看手冊就可以了,把單個功能實現。但是,如果在仔細的看官方的源代碼,其實還是能找到一些小問題。
就比如,定時器ARR應該要減1才對,
前言
大家好。
首先,感謝南京中科微提供的CSM32RV20開發板,同時也感謝發燒友提供的試用平臺。
這次測試的是定時器,測試目標:使用定時器,周期性的控制LED燈。
代碼編程
還是一樣的,按照官方的教程,建立DEMO程序,查看main.c文件。
![poYBAGHjj3WABnnZAAO7_8z_49A083.png](https://file.elecfans.com/web2/M00/2D/5E/poYBAGHjj3WABnnZAAO7_8z_49A083.png)
基本上定時器的相關代碼就在這里的,但是定時器的中斷函數呢?函數入口呢?
這里可以直接查看啟動文件。
![pYYBAGHjj3aAdKrmAAJfFE_rA7I435.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj3aAdKrmAAJfFE_rA7I435.png)
按照這個函數名稱,查找:ctrl+f(基本上絕大多說的查找命令都是這個快捷鍵組合)
![pYYBAGHjj3eAHzsNAABiYuxVeug227.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj3eAHzsNAABiYuxVeug227.png)
這樣你就能找到中斷函數:
![poYBAGHjj3mAXOPuAAINkwcXxa4190.png](https://file.elecfans.com/web2/M00/2D/5E/poYBAGHjj3mAXOPuAAINkwcXxa4190.png)
在中斷函數里,交替改變的是PA12引腳的電平變化。
到了這里,我基本上有了編程的思路的,這還在沒有看數據手冊的情況下:
具體代碼如下:
- int main(void)
- {
- ///----System Init ---------------------------------------------------------------------------------------------
- CLIC_Init();//系統中斷配置
- System_Clock_Init();//系統時鐘初始化
- GPIO_MODE_Init(GPIOA,PIN12,GPIO_MODE_OUTPUT); //GPIO 模式
- //外設配置
- timer1_UpCounting_Mode_Init();//向上計數
- Interrupt_Enable(TIMER1_updata_int_ID);//CLIC使能中斷
- //使能系統總中斷
- SYS_Interrupt_Enable();//CLIC開總中斷
- while(1)
- {
- }
- return 0;
- }
程序編譯下載:
結果燈好像沒有什么變化?就一個紅燈常亮?
![pYYBAGHjj3uATGcOAALo46WF4_8586.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj3uATGcOAALo46WF4_8586.png)
不要著急,使用示波器,或者邏輯分析儀看一下,PA12引腳的電平,你就明白了。
![poYBAGHjj3yAOkqiAAAgg3GMM-A128.png](https://file.elecfans.com/web2/M00/2D/5E/poYBAGHjj3yAOkqiAAAgg3GMM-A128.png)
頻率都達到了500HZ了,肉眼能看到,才是怪事。
到了這里,實驗目的是達到了。但是通常,我們是需要改變定時的周期/頻率的,所以,這里就需要仔細的研究下定時器初始化了。
![pYYBAGHjj36APhJaAAH5i2Xz_aU936.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj36APhJaAAH5i2Xz_aU936.png)
PSC-預分頻,值為31;ARR-自動重裝寄存器,值為1000。
結合系統時鐘是32MHZ,所以定時器的頻率分頻應該是31+1,所以計時時鐘為1MHZ。
在這個頻率下,計數1000個,也就是1KHZ,1MS,所以,定時器的中斷周期是1MS,LED的頻率就是500HZ了。
如果是這樣的話,ARR的值應該是1000-1=999才是更精確的1MS定時中斷啊。不過都是小問題。
調整驗證一下:
將定時器中斷周期改為500MS,使得LED1S閃爍一次。更改Timer1_UpCounting_Mode_Init();
![poYBAGHjj3-AFSMXAAFh1DT1J2M851.png](https://file.elecfans.com/web2/M00/2D/5E/poYBAGHjj3-AFSMXAAFh1DT1J2M851.png)
可以看到預分頻的值范圍是0-65535;
定時器為16位定時器,計數范圍也是0-65535;
所以修改定時器初始化值為:
![poYBAGHjj4CALEH7AAHqLUeabhk896.png](https://file.elecfans.com/web2/M00/2D/5E/poYBAGHjj4CALEH7AAHqLUeabhk896.png)
在抓PA12波形:
![pYYBAGHjj4GAEVJ9AAEpPmcsLvY491.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj4GAEVJ9AAEpPmcsLvY491.png)
試用感受
CSM32整體用起來,感覺還是不錯基本上不用看手冊就可以了,把單個功能實現。但是,如果在仔細的看官方的源代碼,其實還是能找到一些小問題。
就比如,定時器ARR應該要減1才對,
![pYYBAGHjj4KAK7qkAAAlHQUOXtU167.png](https://file.elecfans.com/web2/M00/2D/65/pYYBAGHjj4KAK7qkAAAlHQUOXtU167.png)
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
南京中科微
+關注
關注
0文章
60瀏覽量
814 -
CSM32RV20
+關注
關注
0文章
40瀏覽量
234
發布評論請先 登錄
相關推薦
有獎丨米爾 全志T536開發板免費試用
米爾與全志合作發布的新品基于全志T536應用處理器的MYD-LT536-GK開發板免費試用活動來啦~~米爾提供了3塊價值750元的MYD-LT536-GK開發板發起試用活動您不僅可以免
![有獎丨米爾 全志T536<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
【敏矽微ME32G070開發板免費體驗】\\+Lora通信終端產品開發項目
需求評估產品性能。
一.開發板申請之路—聽我娓娓道來
2024年11月19日早,電子發燒友論壇微信公眾號發文,標題為《新品體驗!敏矽微ME32G070開發板免費
發表于 12-15 18:26
瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示
本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
![瑞芯<b class='flag-5'>微</b>主板/<b class='flag-5'>開發板</b>Linux系統播放音頻方法,觸覺智能RK3562<b class='flag-5'>開發板</b>演示](https://file1.elecfans.com/web3/M00/02/33/wKgZO2dbrJmACGv1AAB7yOSAvVY164.png)
常用在工業控制系統上的MCU芯片資料:CSM32RV20
CSM32RV20是一款基于RISC-V核的低功耗MCU芯片。 內置RISC-V RV32IMAC內核(2.6CoreMark/MHz); 蕞高32MHz工作頻率; 內置4kB的SRAM; 內置8B
![常用在工業控制系統上的MCU芯片資料:<b class='flag-5'>CSM32RV20</b>](https://file1.elecfans.com/web1/M00/F4/DC/wKgZoWczDC-AV7TwAAEXvP1_BJ0707.png)
有獎丨米爾 瑞芯微RK3576開發板免費試用
米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動來啦~~米爾提供了7塊價值849元的MYD-LR3576
![有獎丨米爾 瑞芯<b class='flag-5'>微</b>RK3576<b class='flag-5'>開發板</b>免費<b class='flag-5'>試用</b>](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
【作品合集】龍芯2K0300蜂鳥開發板試用精選
】+4.libmodbus移植【龍芯2K0300蜂鳥板試用】+3.移植lua到loongarch【龍芯2K0300蜂鳥板
發表于 09-10 18:17
【龍芯2K0300蜂鳥板試用】開箱體驗
本帖最后由 ele2022 于 2024-8-13 19:54 編輯
首先感謝電子發燒友和龍芯中科提供的試用機會。
今天開箱體驗龍芯中科的一款2K0300蜂鳥
發表于 08-12 19:59
點擊參與米爾NXP i.MX 93開發板有獎試用
米爾與NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X開發板發起試用活動您不僅可以免費體
![點擊參與米爾NXP i.MX 93<b class='flag-5'>開發板</b>有獎<b class='flag-5'>試用</b>](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
![](https://file1.elecfans.com/web2/M00/C7/8D/wKgZomYU1ymAas_qAAQcAtWsXUU771.png)
香橙派發布首款RISC-V開發板OrangePi RV
2024年3月,香橙派在全球開發者會議上發布了其首款基于RISC-V開發的OrangePi RV主板。這款開發板擁有四核RISC-V U74與S7協處理器,配備
評論