stm32-usart收发数据
2018-12-24 本文已影响0人
唯愛倩
第一次用简书发文章,难免有些纰漏,多多包含
网上大多是老版本的STM32CubeMx教程,特出一个最新版的教程。
软件:STM32CubeMx 5.0.0、MDK5、
MCU:STM32F103ZET6
最近在做openmv与stm32的有关项目,用到了两者的通讯问题,第一次用USART进行两个系统的通讯,去网上找了很多文章,学到不少东西,在此总结一下:
STM32CubeMx配置
- 打开STM32CubeMx软件,File->New Project,选择自己对应的stm32型号,我这里选择STM32F103ZET6,点击Start Project创建一个新工程。
- System Core->RCC、设置High Speed Colock(HSE)为Crystal/Ceramic Resonator(意思是:晶体/陶瓷谐振器)
- System Core->SYS、设置Dubug为Serial Wire.
- Conneectivity->USART1、设置Mode为Asynchronous(异步模式)
在Configuration(配置)中进行USART配置
Parameter Settings(参数设置)
Baud Rate(波特率)、World Length、Parity等参数根据自己需要设置
此处直接默认
- Clock Configuration(时钟树配置)如图所示HCLK(MHz)默认8MHz、更改为72MHz、弹窗点击确定即可,至此完成时钟配置
- Project Manager
① Project:设置Project Nmae(项目名字)、Project Location(项目位置)、Toolchain/IDE(IDE类型)
本人用的是MDK,所以Toolchain/IDE选择MDK-ARM V5,此设置根据个人所用的IDE进行选择
② Code Generator(代码生成器):如下图设置即可,如需明白为何这样设置,可自行翻译理解
- STM32CubeMx设置完毕,最后一步,生成代码
点击GENERATE CODE,生成代码
- 点击Open Project,直接打开生成的代码。
MDK 代码设置
Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件
Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指increase build,即增量编译。
Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长。
出自:https://blog.csdn.net/jays_/article/details/83022610
- Translate、Build没有报错
- 编写代码
在main.c文件中添加如下代码:
/* USER CODE BEGIN 0 */
uint8_t aRxBuffer1[10]; //接收缓存
uint8_t aTxBuffer[] = "*********USART Connect is OK!***********\r\n";
/* USER CODE END 0 */
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1,aRxBuffer1,1); // 启动接收
HAL_UART_Transmit_IT(&huart1,aTxBuffer,sizeof(aTxBuffer)); // 发生数据
/* USER CODE END 2 */
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit_IT(&huart1,aRxBuffer1,1); // 发送出去
}
/* USER CODE END 4 */
至此,所有配置已完成。将程序下载至MCU,进行调试。
由于板子不在身边,就不上传调试的图了,
此程序是通过串口接受一个字节的数据并通过串口发送出去
如有疑问,可以在下边评论,欢迎大家指出错误之处
第一次写简书,请大家多多指教