首頁 > 評測 > 【SWDM-QFP100-34SVEA3測評】+ 環(huán)境搭建與點燈之一波兩折

【SWDM-QFP100-34SVEA3測評】+ 環(huán)境搭建與點燈之一波兩折

  
  • 作者:
  • 來源:
  • [導(dǎo)讀]
  • #申請原創(chuàng)#上期發(fā)了開箱貼,并將排針焊接好,今天來分享一下基于Keil開發(fā)平臺的環(huán)境搭建。首先加入華芯微特技術(shù)QQ群,群中公告有提供全系列的開發(fā)資料下載鏈接:https://pan.baidu.com/s/1atLWlk1_SUR8WjISr-Bfpw,提
#申請原創(chuàng)#上期發(fā)了開箱貼,并將排針焊接好,今天來分享一下基于Keil開發(fā)平臺的環(huán)境搭建。首先加入華芯微特技術(shù)QQ群,群中公告有提供全系列的開發(fā)資料下載鏈接:https://pan.baidu.com/s/1atLWlk1_SUR8WjISr-Bfpw,提取碼:byv2      資料很齊全,這里我們暫且只需下載“00.其它公用資料”,“09.SWM341”兩個文件夾的內(nèi)容,關(guān)于SWDM-QFP100-34SVEA3開發(fā)板的接口說明圖,在根目錄下的《00.SYNWIT MCU 最小系統(tǒng)板應(yīng)用指引_202212151802》文檔中有介紹。

        關(guān)于在Keil平臺上搭建環(huán)境,資料包中的“00.其它公用資料\01.KEIL IAR 工程建立說明”目錄下的《UM1702 KEIL工程建立說明》有詳細的講解,由于SWDM-QFP100-34SVEA3開發(fā)板是基于ARM Cortex-M33的內(nèi)核,要求Keil版本在V5.32以上,JLink下載調(diào)試器硬件版本在V9或以上,要使用Keil開發(fā)基于SWM341的程序,首先得安裝pack支持包,建議安裝“00.其它公用資料\02.KEIL工程下載算法庫&器件支持包”目錄下的“Synwit.SWM32_DFP.2.0.4.pack”。
Synwit.SWM32_DFP.2.0.4.zip (5.25 MB)


        pack安裝完成后,進入到“\09.SWM341\01.基礎(chǔ)庫”目錄下,將“SWM341_Lib-20230217.zip”文件解壓,進入到GPIO參考例程中,使用Keil打開“KeyLED”工程,編譯完成后,將開發(fā)板上電,使用杜邦線將JLink調(diào)試器與開發(fā)板上的J7正確連接。

         Debug調(diào)試下載時,彈出如下界面:

        這難道是提示J-Link的版本過低?于是乎在“00.其它公用資料\80.SEGGER JLINK”目錄下,選擇安裝“JLink_Windows_V700”。


     安裝完成后,再次進入Debug調(diào)試,依舊選擇“J-LINK/J-TRACE Cortex”,結(jié)果還是顯示如下界面,還是無法正常識別到JLink下載器。

      然后質(zhì)疑是不是Keil的版本問題,筆者之前一直使用的是uVision V5.26版本,在此之前均未發(fā)現(xiàn)類似的情況。好在網(wǎng)絡(luò)方便,重新安裝一款最新版的Keil也是有必要的,于是乎備份好之前的pack包,卸載舊版本,下載安裝最新的Keil_V5.38a,鏈接:https://pan.baidu.com/s/16moWnK-O1DoZtdvQ0czwcg,提取碼:rnvd
     &nsp; 當然以上的鏈接地址也包括了**工具,值得注意的是,安裝完成后,選中“Keil uVision5”圖標,鼠標右鍵選擇“以管理員身份運行”,然后才能使用**工具**。導(dǎo)入原來備份好的pack包,至此Keil版本更新完成。

       然后再次進入Debug選項,此次終于可以正確識別到JLink調(diào)試下載器了。


        由官方提供的電路原理圖可知,板子的按鍵KEY與LED連接在J6上,而參考的GPIO操作例程是將PA0定義為KEY,PA5定義為LED,實現(xiàn)的功能就是通過對PA0的輸入控制,從而控制PA5的輸出,這里需要使用杜邦線將PA0與J6的KEY腳相連,PA5與J6的LED腳相連。
SWM34SVET6_SWDM-QFP100-34SVEA3.pdf (269.41 KB)

         因此采用SDK的GPIO參考例程,實驗現(xiàn)象如下:

       在此工程的基礎(chǔ)上,利用人的視覺暫留時間差,稍加修改即可完成呼吸燈的效果,代碼修改如下:
  1. #include "SWM341.h"

  2. uint32_t SysTick_Delayus(uint32_t us);

  3. void delay(int s)
  4. {
  5.         for(int i=0; i<s; i++)
  6.    SysTick_Delayus(1000000);
  7. }

  8. void delayms(int ms)
  9. {
  10.         for(int i=0; i<ms; i++)
  11.    SysTick_Delayus(1000);
  12. }

  13. void Breathe(void)
  14. {
  15.         int i=0;
  16.         int time = 25;
  17.         for(i=0; i<time; i++)
  18.         {
  19.                 GPIO_SetBit(GPIOA, PIN9);
  20.                 delayms(i);
  21.                 GPIO_ClrBit(GPIOA, PIN9);
  22.                 delayms(time - i);
  23.         }
  24.         for(i=time; i>0; i--)
  25.         {
  26.                 GPIO_SetBit(GPIOA, PIN9);
  27.                 delayms(i);
  28.                 GPIO_ClrBit(GPIOA, PIN9);
  29.                 delayms(time - i);
  30.         }
  31. }

  32. int main(void)
  33. {       
  34.         SystemInit();
  35.        
  36.         GPIO_Init(GPIOA, PIN0, 0, 1, 0, 0);                        //輸入,上拉使能,連接板上KEY
  37.        
  38.         GPIO_Init(GPIOA, PIN5, 1, 0, 0, 0);                        //輸出,連接板上LED燈
  39.        
  40.         GPIO_Init(GPIOA, PIN9, 1, 0, 0, 0);                        //輸出,連接外置LED燈
  41.        
  42.         while(1==1)
  43.         {
  44.                 if(GPIO_GetBit(GPIOA, PIN0) == 0)                //按鍵被按下
  45.                 {
  46.                         GPIO_SetBit(GPIOA, PIN5);
  47.                 }
  48.                 else
  49.                 {
  50.                         GPIO_ClrBit(GPIOA, PIN5);
  51.                 }
  52.                 Breathe();
  53.         }
  54. }

  55. /* 設(shè)CPU主頻160MHz,最大延時時間為pow(2, 24)/160=104857us */
  56. uint32_t SysTick_Delayus(uint32_t us)
  57. {
  58.         uint32_t ticks = us * CyclesPerUs;
  59.        
  60.         if((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
  61.                 return 1;
  62.        
  63.         SysTick->LOAD = ticks - 1;
  64.         SysTick->VAL  = 0;    //清零計數(shù)器,清除COUNTFLAG標志
  65.         SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
  66.                     SysTick_CTRL_ENABLE_Msk;
  67.        
  68.         while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)) __NOP();
  69.         SysTick->CTRL = 0;
  70.        
  71.         return 0;
  72. }
復(fù)制代碼
        編譯下載后,將外置LED燈的正極連接在PA9上,負極連到板上的GND上,呈現(xiàn)的呼吸燈效果如下,此次分享到此結(jié)束。青山不改,綠水長流,咱們后會有期。

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論