STM32CubeIDE学习记录-基于STM32F407ZGT6(第一章)

 一、前言

初学时,很多细节没注意就会卡很久。因此每次碰到坑时都应该记录下来。

本节学习使用STM32CubeIDE配置STM32F407ZGT6探索者开发板,并实现串口通信功能

二、STM32CubeIDE配置工程环境

2.1 新建工程

选择芯片STM32F407ZGT6,工程名称:uart1。

2.2配置芯片

配置顺序按照:SYS调试——>RCC晶振时钟源——>配置时钟树

第一步:SYS调试

这一步必须配置,debug模式默认关闭,如果不配置,烧录一次程序后会自锁芯片。

解锁操作:断电,BOOT0接高电平,上电后烧录一个正常例程,再将boot0恢复原位置(正点原子一键下载电路好像不用改BOOT0,之后我再看一下这里)

第二部:RCC晶振时钟源

选择高速外部时钟源,选择晶振:Crystal/Ceramic Resonator(晶体/陶瓷谐振器)

LSE不用配置

第三部:配置时钟树

配置时钟树首先要选择②处和⑤处勾选。②选择外部告诉时钟源,⑤选择锁相环

之后要根据芯片外围晶振HSE的数值填写①处的值,这里看到正点原子接的8MHZ,所以①填8,之后③④处可以搭配着来,使SYSCLK是168MHz就行(芯片支持的最大时钟频率),小于168也可以。

⑥选择四分频

⑦选择二分频

2.3工程代码管理

对于生成代码还需要一些配置

第二页勾选这里,生成.c和.h文件并将生成的.c和.h文件分开存放,便于管理

到此点击Ctrl+S保存并自动生成代码,如果没有自动生成就点这里生成代码

三、串口通信

串口通信是跟B站UP主操作的,附上链接

【keysking的STM32教程】 第8集 STM32的串口通信_哔哩哔哩_bilibili

博主教的不错很细致。

实现功能:每秒向电脑发送一次"Hello World"

 MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  char message[] = "Hello World";//存储要发送的信息
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  HAL_UART_Transmit(&huart1, (uint8_t*)message, strlen(message), 100);//HAL库函数,功能是通过指定的串口发送信息。
	  HAL_Delay(1000);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

形参1是串口地址,要有取地址符号。

形参2是发送的信息的地址。

形参3是发送信息的长度,用strlen函数取数组的长度。使用此函数要在最开始加上#include<string.h>

形参4是发送的最大时间,超过则不再发送

编译无错误后,点击运行下载进单片机。

之后在串口助手或者UP主的串口网站:波特律动 串口助手 (keysking.com)中连接串口,波特率152000,即可接收到数据,要调整为接受ASCII码形式。

四、踩过的坑

本节用来介绍过程中遇到的问题

1. 我是使用的USB线接的开发板串口端,因此串口只能选择串口1,因为正点原子是将串口1连接到USB端的,使用其他串口需要外界别的GPIO口。

2. 时钟树配置,一定要根据原理图与芯片直接相连的晶振大小值,不然不论你怎么写程序,都会产生错误,因为系统工作时钟和时钟树不一样。

我当初选择HSE是25MHZ(实际是8MHZ),因此我下载程序后,串口接受到的信息全是乱码,并且一次发送的十六进制数有20多个,"Hello World"也就11个吧。所以明显有错误。

3. 程序下载好后,连接串口结果没有信息传回。只有下载后先断电,再上电,重新连接串口才有数字。不知道为什么,一般不是直接复位就好了,但是我复位后程序就不发信息了,必须断电重启才行。

  • 43
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于stm32f407zgt6-freertos和esp32的智能家居控制系统是一种通过嵌入式技术实现的智能家居系统,旨在提供用户便捷的家居控制体验。该系统采用stm32f407zgt6微控制器作为主控芯片,搭配freertos操作系统,通过与esp32模块实现与互联网的通信,可以通过手机等设备随时随地对家居设备进行控制。 首先,stm32f407zgt6作为主控芯片具有较高的性能和稳定性,能够有效处理各种家居设备的控制指令,并与esp32模块进行通信。其搭配的freertos操作系统是一种实时操作系统,能够提供优先级调度和任务管理功能,确保系统的稳定性和可靠性。 其次,esp32模块作为通信模块能够实现与互联网的连接,通过WiFi或蓝牙等方式与手机等设备相连。该模块可以通过与stm32f407zgt6主控芯片的通信,将用户的控制指令传达给各个家居设备,实现对灯光、空调、窗帘等设备的远程控制。 智能家居控制系统具有以下特点:首先,用户可以轻松通过手机APP等设备远程控制家中设备的开关、调整亮度、调节温度等,提高生活的便捷性和舒适度。其次,系统支持定时开关功能,可以根据用户的需求在预设时间自动开启或关闭设备,实现省电和安全的目的。此外,系统还具备个性化场景设置功能,用户可以根据不同需求,设置不同场景的设备状态,如“回家模式”、“离家模式”等,提升用户的居家体验。 总结起来,基于stm32f407zgt6-freertos和esp32的智能家居控制系统通过嵌入式技术实现了设备之间的互联和智能控制,为用户提供便捷、舒适、安全的家居体验,是现代智能家居的重要组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值