STM32是一款专业的图形编程软件,支持Python、blockly、hex等多种代码的读写,用户不需要任何硬件支持就可以模拟运行环境,实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。
1、STM32的学习门槛
STM32的开发是基于C语言的,当然也使用了一些简单的汇编(启动文件)语言,汇编我们不需要去了解很多,熟悉几条简单的指令就行。C语言的话就需要做到熟练掌握了,因为STM32的开发库使用了大量的结构体、指针等知识,所以要想学好STM32,学好C语言是第一个前提!
2、单片机原理
掌握了C语言这个前提以后,就可以开始STM32的学习了,STM32毕竟也是个MCU,也就是单片机,是相对于51单片机更复杂一点的单片机,所以就要了解单片机的工作原理,知道MCU是怎么工作的,知道MCU内部RAM ROM CPU等等是如何协调工作的。
3、基本的电路知识
一个完整的项目不仅仅只有MCU,还有复杂的外围电路,比如LED、蜂鸣器、LCD、各种传感器电路、电源电路等等,所以还要熟练掌握基础的电路知识。例如三极管、MOS管、二极管等等器件,以及三极管搭建的开关电路、放大电路等等。
4、学习STM32要先易后难
自学STM32,一定要先易后难,不要着急做项目,先把MCU的基本外设熟练掌握,再去做项目。可以先把MCU简单的外设实验做一遍,比如:STM32启动文件、GPIO、USART、IIC、SPI、RTC、DMA、ADC、定时器等,先把这些简单的外设熟练掌握,再去学习SDIO、ETH以太网、CAN等等复杂的外设。其实在掌握了简单的外设之后,就可以先去做些项目锻炼一下,在实践中提升自己。
自动ISP,把BOOT0与地直接连接,那么每次上电就会运行程序,而且只要点击电脑上的“下载”按钮,就开始下载程序,下载完程序,就开始执行。实现此目的,需要借助串口握手信号DTR和RTS。
DTR连接RESET(复位引脚),控制复位,RTS连接BOOT0,用来控制程序运行或者等待下载。
下面说明如何用USB转TTL芯片实现STM32自动ISP。CH340芯片如下图所示:
CH340芯片,DTR和RTS引脚在一般情况下是高电平,低电平有效。因为STM32的RESET引脚,也是一般情况下是高电平,低电平复位,所以DTR可以与RESET直接连接。但是BOOT0是高电平下载程序,低电平运行程序,正好与RTS相反,所以我们需要把它反相,加一个NPN三极管即可。电路如下图所示:
ISP软件的选择:
看了上图的选择,有些人一定会产生疑虑。按道理应该是低电平复位,然后低电平进入BOOTLoader呀。但是,有一点需要注意,它这里讲的高低电平,是针对电脑原始的9针串口的,也就是“232电平”,我们用的USB转TTL芯片是“TTL电平”,正好相反。
下载过程和结果如下图所示:
注意:CH340在刚上电,稳定需要几秒钟时间,在此期间,DTR引脚会有两次或者三次的变低情况,这样会引起单片机上电后复位两三次,稳定后不会影响程序运行。如果不想让单片机上电复位好几次,上电的时候把DTR与RESET断开即可。
http://pan.baidu.com/s/1dF5XqfR下载并安装驱动ST-LINK驱动
将st-link插入usb,进入设备管理器,查看驱动是否安装成功
http://pan.baidu.com/s/1jHDE1X8下载并安装STVP烧写软件
打开STVP,选择configure菜单栏下的configure ST Visual Programmer,弹出如图所示的界面,选择ST-LINK,SWD模式,再选择芯片的型号,点击确定
关于ST-link与stm32的连线,只需要将ST-link上的VCC、GND、SWCLK、SWDIO四个接口分别与stm32对应引脚相连即可,注意芯片的工作电压是5V还是3.3V,不要选错了
菜单栏下面有一排图标按钮,点击第二个就能烧写了,如果芯片之前烧写过程序,则要先点击第5个按钮擦除程序后才能烧写
1、一般stm32都会使用swd方式进行下载,因为节省引脚。
2、那么不管是否用到了JTAG引脚。最好的方式就是首先把jtag禁掉,以免自己操纵某个引脚时,发现引脚始终不能
按照设计进行拉高或者拉低操作。
3、禁掉jtag方式:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
4、可以把这段代码放在gpio初始化中。