打开stm32cubeMX,选择新建工程
输入单片机型号,在下面选中具体型号,然后点右上角 开始工程
第一步设置 调试接口,否则生成的工程就会下载不到单片机中,使用stlink或者jlink的话,在debug选项中直接选择serial wire
接下来在左边选中RCC,设置晶振源,我这里使用的是外部时钟,在HSE选项出选择使用外部晶振。
下面设置串口在左边找到USART1,中间模式选择异步模式。
接下里设置串口参数,这里直接使用默认值,波特率115200,8位数据位,1位停止位,无校验位,发送和接收模式。
在NVIC setting选项中使用串口中断,因为程序中要使用串口接收中断。
接下来设置时钟,选择时钟配置,左下角时钟源选择HSE,然后在HCLK的位置直接输入需要输出的时钟值,这里设置72,按回车键。
这时会弹出一个对话框,直接点OK。
这时候软件就会自动计算时钟的分频系数和倍频系数,输出时钟就会自动设置为72MHz
接下来设置工程名,选择工程存储的位置,设置编译器的类型,和编译器最低版本。这里的编译器选择为IAR。
下来配置工程,这里选择只添加需要用到的库函数,生成代码时,每个外设单独生成.c和.h文件。
最后点右上角生成工程按钮,代码生成完之后,直接选择打开工程。
打开工程之后可以看到串口的初始化代码已经写好了。
但是此时还不能直接使用串口,还需要自己添加中断和串口接收回调函数。
在usart.c文件中定义一个变量用来存放串口接收到的的数据,注意自己编写的代码要写在注释BEGIN和END之间,这样下次在使用stm32cubeMX生成代码的时候自己编写的代码就不会被删除掉。
接下来在初始化函数中开启接收中断。
下面编写串口接收回调函数,串口接收到数据之后,将接收到的数据再发送出去。
编译代码,无错误,无警告。
接下来设置仿真器,在工程名上右键,选择options
左边选择debugger,右边选择jlink
然后再底下选择jlink/j-Trace选项,右边选择connection,选择SWD接口。如果下载器使用的是4根线的SWD接口,这里一定要记得设置,否则下载程序的时候会报错。
最后编译下载程序,在串口回调函数中打个断点,使用USB转TTL连接单片机的PA10和PA9引脚,使用串口工具发送一个字母q,可以看到串口中断已经进去了,接收到的数据也是q。说明代码已经正常运行了。
取消断点,全速运行代码。
代码正常运行。说明串口通信代码功能已经成功实现。