先声明一点,我自己不是高手,也不是大神,只是积累了一点点,想分享一下罢了!
还记得那会我在初学51单片机时,当得知P89V51系列单片机支持在线仿真、跟踪代码时,那是一个兴奋啊,无论如何都要弄一个来玩玩,进行代码跟踪!
当在开始接触和学习STM32是,那时候知道了J-Link的存在,它出了烧录,也能代码跟踪,单步执行。后有知道了St-Link的存在,它针对意法半导体的MCU作调试和烧录!当然了,还有ST-Link和J-Link的各种针对于STM32的兼容用法。但知道当我开始使用别人的代码进行开发的时候,无可想象,使用J-link或者ST-Link进行在线仿真调试(代码跟踪)显得矫情了!
对于底层的硬件驱动调试来说,使用J-link或者ST-Link进行代码跟踪效果是比较可观的,由于只由于我们可以看到寄存器的值进行逻辑的判断和配置正确与否的判断。当然,也可以在某些特殊的情况的要求下,进行代码的优化,也可以使用。至于其他的情况,自我感觉使用J-Link/ST-Link进行代码跟踪显得很矫情了!
一般一个大的项目或者一个产品项目中,整一个软件程序基本上不可能是同一个人写的,可能同事写的,也有可能是芯片原厂提供的方案,而且各个程序员的风格各异(对于对编程风格有要求的公司,情况可能会好一点,总之有些程序员的程序风格可以叫做惨不忍睹,总之,在调试程序一天,你就会骂他娘一天,直到骂到公司不再使用这个方案或者你辞职,也不知道这类程序员是咋想的,为毛原意让人家骂他娘,他都不愿意修正或者学习一下风格),除了这些还有这项技术的难度、算法的复杂程度等等,所以一般会将软件进行分层,底层就是启动之后硬件驱动了,然后就是与硬件无关的功能代码了(当然,我只是随意举个例子,列如Linux、Android这些程序就分成了好几层,而且超级复杂),还有就是,有些技术是原厂或者方案公司不方便外漏的技术,所以他们所提供的二次开发包SDK一般关键技术已经封装成库,那么使用J-Link/ST-Link来调试跟踪代码已经不现实了,由于在一个项目中我们不可能了解到全部的代码,也不可能去看全部的代码,只由于没有时间。一般可能我们只需要知道自己负责的这部分的逻辑流程和进入接口和向外输出接口即可,也就是说,我们自己只能在小小的空间里面做事,万万不能越界。这时候,UART/USART同步/异步串行口通信将起到了巨大的作用。很简单,只需在其接口Tx和Rx与PC机建立串口通信,使用串口调试助手与其通信(打印或者输入标志到MCU),即可通过串口调试助手的打印现象来进行代码的跟踪。说白了,就是在我们代码的某处(需要的地方)将某些标志或者数据打印出来,既可以轻易的对代码进行跟踪。就可以知道代码的执行逻辑和步骤。我目前这可比J-Link/ST-Link简单多了。
所以,基于这样的一个思想,每当我进行新的硬件代码调试时(不管是自己写驱动还是使用SDK包),只要硬件支持UART/USART,第一件事就是点灯(能够控制GPIO口)和调通UART/USART(以便进行代码的调试),这两点自我觉得是超级重大的。
到这里,基本上经验之谈已经结束,下面就记录一下STM32F030 Nucleo板卡的学习 。
第一,有必要搞清楚几点:
(1)UART和USART之间的区别:
UART:Universal Asynchronous Receiver and Transmitter,通用异步收发器,[Bus Signal] Tx , Rx
51单片机上面的就是这个了,ARM架构的MCU/CPU部分也还支持。
USART:Universal Synchronous Asynchronous Receiver and Transmitter,通用同步异步收发器,[Bus Signal]Tx , Rx , CK
从名字上,就可以看出了,USART比UART高大上多了,只是在UART之上增强了通信协议。
USART支持同步模式,因此USART需要同步信号USART_CK(仔细的观察STM32单片机,就可以发现这样的引脚),一般同步信号通信相对而言是比较少用的,所以一般的调试中,UART和USART的使用方式是一样的,都使用异步模式。
(2)STM32 USART通信的各种模式:

不用多说,我信任看到这个表就一目了然了!
当然,通过MAX485或者RS485等芯片,UART/USART接口可以作为458通信接口。
那么目前就要把牛客板卡的USART1调通,与PC机进行串口通信,
(1)找到使用的USART1引脚。
查看Datasheet,得知如下图:

STM32F030 USATU1的复用第一功能引脚就如上了,其中有GPIOA8作为USART1_CK,同步模式时作为USART同步通信的同步时钟引脚;GPIOA9脚为USART1通信时的发送引脚;GPIOA10脚作为USART1通信时的接收引脚;GPIOA11和GPIOA12引脚作为USART1通信当使用硬件流控时,作为流控控制引脚。不过,在这里咱不玩什么同步模式,也不玩流控,所以只需要配置GPIOA9和GPIOA10引脚即可。
嵌入式物联网需要学的东西真的超级多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
扫码进群领资料



