使用stm32cubeide(HAL库)开发
1.新建stm32工程。
![../../_images/stm32_2_1.jpg](../../_images/stm32_2_1.jpg)
2.输入型号,选择对应的新品,点击next。
![../../_images/stm32_2_2.jpg](../../_images/stm32_2_2.jpg)
3.输入名称,点击finish,完成工程创建。
![../../_images/stm32_2_3.jpg](../../_images/stm32_2_3.jpg)
4.选中RCC,配置 High Speed Clock(HSE) 为 Crystal/Creamic Resonator。
![../../_images/stm32_2_4.jpg](../../_images/stm32_2_4.jpg)
5.切换到时钟树配置,将时钟改为72MHz,会跳出提示框,点击ok,软件会自动帮你配置好一切设置,当然这里有个前提,你使用的开发板上是带有外部晶振的,并且这个外部晶振是8.000MHz。
![../../_images/stm32_2_5.jpg](../../_images/stm32_2_5.jpg)
6.找到usart1,将Mode设置为Asynchronous(异步),并且勾选打开中断。
![../../_images/stm32_2_6.jpg](../../_images/stm32_2_6.jpg)
不要忘记配置波特率(波特率应该与串口屏上配置的波特率一致)。
![../../_images/stm32_2_6_1.jpg](../../_images/stm32_2_6_1.jpg)
7.配置完毕,按下ctrl + s 保存,就会自动生成初始代码,或者找到Project菜单,点击Generate Code。
![../../_images/stm32_2_7.jpg](../../_images/stm32_2_7.jpg)
8.生成代码后请第一时间修改编码(现在不设置,后期修改时中文会乱码)。
8.1 右键工程选择属性
![../../_images/stm32_2_8.jpg](../../_images/stm32_2_8.jpg)
8.2 根据自己的需求选择合适的编码,这里的编码要和串口屏的编码一致。
![../../_images/stm32_2_9.jpg](../../_images/stm32_2_9.jpg)
8.3 某些编码不存在,可以手动输入,比如GB2312,输入完成后点击 Apply and Close 完成设置。
![../../_images/stm32_2_10.jpg](../../_images/stm32_2_10.jpg)
8.3 将tjc_usart_hmi.c复制到Src文件夹,将tjc_usart_hmi.h复制到Inc文件夹(这两个文件请自行从文末给出的工程中自行提取)。
![../../_images/stm32_2_11.jpg](../../_images/stm32_2_11.jpg)
复制完成后如图所示
![../../_images/stm32_2_12.jpg](../../_images/stm32_2_12.jpg)
9.切换到main.c, 在 USER CODE BEGIN Includes 和 USER CODE END Includes 之间插入 #includes
如有疑问请参考: 为什么要在begin和end之间插入代码
![../../_images/stm32_2_13.jpg](../../_images/stm32_2_13.jpg)
10.切换到main.h,在 USER CODE BEGIN ET 和 USER CODE END ET 之间声明 huart1 会在其他文件中调用
![../../_images/stm32_2_14.jpg](../../_images/stm32_2_14.jpg)
11.切换到main.c,在 USER CODE BEGIN 2 和 USER CODE END 2 之间初始化环形缓冲区和打开串口接收中断
并且在 USER CODE BEGIN 3 和 USER CODE END 3 之间添加解析代码。
![../../_images/stm32_2_15.jpg](../../_images/stm32_2_15.jpg)
为什么要在begin和end之间插入代码
如果不是在begin和end之间插入的代码,在图形界面重新配置了STM32的功能并使用Generate Code生成代码时,会导致代码丢失
而写在begin和end之间的代码则不会丢失