使用Keil IDE和STM32开发板的入门指南

本文将指导如何使用Keil IDE和STM32开发板进行嵌入式开发。这是作者第一次使用ARM处理器,因此选择了一个商业级别的IDE,因为它们通常更易于使用。随着作者转向GCC,也将记录这一过程。

首先,需要STM32探索板。可以在上查看它。此外,还需要Keil IDE。可以从下载一个免费且程序空间限制为32KB的版本。

设置项目

首先,需要创建一个新项目,并在ST Micro部分选择处理器。然后,系统会询问是否要将STM32启动代码复制到项目文件夹。选择是。接下来,建议使用Keil的STM32初始化文件。作者在示例代码中找到了它们。可以在下载这些文件。下载文件后,解压缩。将以下文件复制到与项目文件相同的文件夹中:

  • STM32_Init.c
  • STM32_Init.h
  • STM32_Reg.h

现在将STM32_Init.c添加到项目中。右键单击Source Group 1,然后单击添加文件到组。可以随意分组,这不会影响任何构建过程。

为了保持整洁,将创建一个Bin文件夹。因此,在与项目相同的文件夹中创建一个新目录。接下来,右键单击Target文件夹,然后单击目标选项。然后单击输出,单击选择对象文件夹,找到创建的bin文件夹。

最后,创建并添加一个文件(称之为main.c)。在那里,添加一个将调用Init代码并包含init文件的主函数。可能还想包含STM32库文件。

#include "stm32f10x_lib.h" #include "STM32_Init.h" int main(void) { stm32_Init(); return 0; }

设置调试环境

现在,需要为STM32 Discovery设置调试环境。首先,需要选择调试器。因此,右键单击项目,然后单击目标选项,然后转到调试选项卡。接下来,不想运行模拟器,因此将单击右侧的Use:单选按钮。在下拉菜单中,选择ST-Link Debugger。然后需要单击设置并选择SWD。最后,喜欢在main()之前运行到main()的检查,以便在运行之前停止。

编码串口

在本节中,将设置STM32以回显它在串口上接收到的内容。第一步是配置usart。使用配置向导打开STM32_Init.c。当作者介绍如何使用GCC开始时,将编写如何在C中执行此操作。启用USART1并设置参数。同时启用USART1中断RXNE(接收),这样就不需要轮询数据,将在字节到达时收到通知。

一旦一切都按照喜好配置好了,就保存。现在将能够使用名为USART1的结构。这里有一些关于经常使用的成员的注释。

  • USART1->SR 包含有关生成的中断的信息
  • USART1->DR 包含接收到的字节,或者如果为USART1->DR分配一个值,它将发送该值。如果从USART1->DR获取值,它将读取从usart接收到的值。

接下来,需要打开main.c。在该文件中,将添加函数定义void USART1_IRQHandler(void)。该函数已在STM32F10x.s中声明,并已映射到中断向量。因此,所需要做的就是启用中断(在配置向导中确实已经完成了),并覆盖它。函数看起来会像这样:

void USART1_IRQHandler(void) { volatile unsigned int vsr; int ByteSent; vsr = USART1->SR; if (vsr & USART_FLAG_RXNE) { // 清除中断,因为正在处理它 USART1->SR &= ~(USART_FLAG_RXNE); ByteSent = (USART1->DR & 0x1FF); SendByte(ByteSent); } }

当然需要定义SendByte。原型将是void SendByte(int byte);定义看起来会像这样:

void SendByte(int byte) { // 等待uart完成发送字节。 while (!(USART1->SR & USART_FLAG_TXE)); USART1->DR = (byte & 0xFF); }

还在main返回之前添加了一个无限循环。现在,只需要将PA10连接到RX,将PA9连接到TX即可。使用了Arduino上的FTDI芯片来实现这一点。只是将PA10连接到Arduino的RX,将PA9连接到TX,并取出了avr。之后,发送到终端的任何内容都会回显给。如果需要一个终端程序,使用了Termite。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485