找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4134|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

使用STLINK進行程序調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:886538 發(fā)表于 2021-2-25 23:34 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
用STLINK來調(diào)試可以真實訪問查看寄存器的變化,下面就以串口輸出內(nèi)容到上位機顯示為例,講述一下如何用STLINK來調(diào)試程序。
1.安裝STLINK驅(qū)動程序。因本例程需要用到串口將內(nèi)容輸出到上位機,我的板子采用芯片CH340將USB轉(zhuǎn)串口,所以要安裝CH340 驅(qū)動。
2.  建立工程,將如圖文件包含到工程里。
3.Options for Target 選項卡在 Debug 欄選擇仿真工為具 Use:ST-Link Debugger,如圖依次 成4個步驟


然后點擊Settting進行STLINK參數(shù)設(shè)置,我選用SW模式,JTAG占用比較多的I/O,容易影響其他外設(shè)的使用,速率不要選擇太大,否則會出現(xiàn)問題。


接下來我們還需要在 Utilities 選項卡里面設(shè)置下載時的目標(biāo)編程器


我們直接勾選 Use Debug Driver,即和調(diào)試一樣,選擇 ST LINK 來給目標(biāo)器件的 FLASH 編程,然后點擊 Settings 按鈕,進入 FLASH 燒錄設(shè)置

設(shè)置好后編寫程序,將硬件連接,下載后就點擊Debug后就可以實時跟蹤程序,很方便的找到程序的bug。
  1.          void GPIO_Configuration(void)
  2. {        
  3.          GPIO_InitTypeDef GPIO_InitStruct;
  4.          GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
  5.          GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
  6.          GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
  7.          GPIO_Init(GPIOA, &GPIO_InitStruct);
  8.          
  9.          GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
  10.          GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  11.          GPIO_Init(GPIOA, &GPIO_InitStruct);
  12. }

  13. void USART_Configuration(void)
  14. {
  15.         USART_InitTypeDef USART_InitStruct;
  16.         USART_InitStruct.USART_BaudRate=9600;
  17.         USART_InitStruct.USART_WordLength=USART_WordLength_8b ;
  18.         USART_InitStruct.USART_StopBits=USART_StopBits_1;
  19.         USART_InitStruct.USART_Parity=USART_Parity_No;
  20.         USART_InitStruct.USART_Mode=USART_Mode_Tx |USART_Mode_Rx;
  21.         USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  22.         
  23.         USART_Init(USART1,&USART_InitStruct);
  24.         
  25.         USART_Cmd(USART1, ENABLE);

  26.         
  27. }
  28. void RCC_Configuration(void)
  29. {
  30.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
  31.      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);  
  32.          
  33. }
  34. void Delay_Ms(u16 time)  
  35.         u16 i,j;
  36.         for(i=0;i<time;i++)
  37.                   for(j=10000;j>0;j--);
  38. }
  39. int main(void)
  40. {        
  41.    u8 i,data;
  42.    RCC_Configuration();
  43.    GPIO_Configuration();
  44.    USART_Configuration();
  45.    data='A';
  46.          for(i=0;i<30;i++)
  47.          {
  48.                  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
  49.                  USART_SendData(USART1,data);
  50.                  data++;
  51.                  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
  52.          }

  53.          
  54.          return(0);

  55. }
復(fù)制代碼

20200531092942693.png (75.72 KB, 下載次數(shù): 82)

20200531092942693.png

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

板凳
ID:517951 發(fā)表于 2021-2-26 11:08 | 只看該作者
很詳細的指導(dǎo), 何愁STM32不會?
回復(fù)

使用道具 舉報

沙發(fā)
ID:830831 發(fā)表于 2021-2-26 09:48 | 只看該作者
感覺 bascom AVR 那樣的語言才是單片機高級語言的出路,這寄存器級的C語言編程也是夠了
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表