找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3669|回复: 2
打印 上一主题 下一主题
收起左侧

使用STLINK进行程序调试

[复制链接]
跳转到指定楼层
楼主
用STLINK来调试可以真实访问查看寄存器的变化,下面就以串口输出内容到上位机显示为例,讲述一下如何用STLINK来调试程序。
1.安装STLINK驱动程序。因本例程需要用到串口将内容输出到上位机,我的板子采用芯片CH340将USB转串口,所以要安装CH340 驱动。
2.  建立工程,将如图文件包含到工程里。
3.Options for Target 选项卡在 Debug 栏选择仿真工为具 Use:ST-Link Debugger,如图依次 成4个步骤


然后点击Settting进行STLINK参数设置,我选用SW模式,JTAG占用比较多的I/O,容易影响其他外设的使用,速率不要选择太大,否则会出现问题。


接下来我们还需要在 Utilities 选项卡里面设置下载时的目标编程器


我们直接勾选 Use Debug Driver,即和调试一样,选择 ST LINK 来给目标器件的 FLASH 编程,然后点击 Settings 按钮,进入 FLASH 烧录设置

设置好后编写程序,将硬件连接,下载后就点击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. }
复制代码

20200531092942693.png (75.72 KB, 下载次数: 82)

20200531092942693.png

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:830831 发表于 2021-2-26 09:48 | 只看该作者
感觉 bascom AVR 那样的语言才是单片机高级语言的出路,这寄存器级的C语言编程也是够了
回复

使用道具 举报

板凳
ID:517951 发表于 2021-2-26 11:08 | 只看该作者
很详细的指导, 何愁STM32不会?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表