【STEVAL-STWINKT1B测评2--点灯+USART串口打印】
比较复杂的工程的话,建议勾选这个选项,之后会对应每个外设生成对应的.c.h文件,这样你的主函数会显得十分简洁。选择异步(Asynchronous)通信模式(简单来说,异步就是收发两方有各自的时钟,同步的话收发两方只有一个时钟)。JTAG: 常见的有 4 引脚和 5 引脚模式,JTAG 接口功能更强大,除了基本的调试功能外,还可以进行边界扫描测试等,不过占用引脚资源较多。以上软件,只有MDK-ARM
一、环境搭建
MDK-ARM 5.42ARM官网

STM32CubeMX 6.13.0STM32CubeMX

STM32CubeProgrammer2.16.0STM32CubeProgrammer

serial port utility 5.0.1串口助手

以上软件,只有MDK-ARM 5.42在官网免费下载后,需要进行破解,,其他都是可以免费使用,具体如何破解各位可以参考这篇文章KEIL安装和破解。此外由于我们使用的MCU是STM32L4R9ZIJ6需要在ARM官网免费下载对应的固件包ARM官网stm32L4xx固件包。
二、外设配置
首先,查看原理图引脚分配用于工业 IoT 应用的 STWIN SensorTile 无线工业节点开发套件和参考设计
LED1绿灯,引脚为PE1

USART2引脚PD8,PD9正好与ST-LINK V3连接,可以直接接到PC端,采用串口打印的方式输出


下面,在STM32CUBEMX中进行配置
点击,从芯片开始配置
在这里搜索,选择对应的芯片型号,可以将常用的芯片类型进行收藏
收藏后,五角星变为实心,双击芯片类型即可开始配置

进入如下界面
选择时钟源
我们选择外部高速时钟,其他参数保持默认
然后,对SYS(systerm)基本功能按照下图配置,其他保持默认
这里Debug 模式设置选择Serial Wire,简单介绍一下Debug两种模式
Serial Wire:占用芯片引脚较少,一般只需 SWDIO(串行数据输入 / 输出)和 SWCLK(串行时钟)两根线,适用于引脚资源紧张的项目。
JTAG: 常见的有 4 引脚和 5 引脚模式,JTAG 接口功能更强大,除了基本的调试功能外,还可以进行边界扫描测试等,不过占用引脚资源较多。
下面对USART(Universal Synchronous/Asynchronous Receiver/Transmitter)
选择异步(Asynchronous)通信模式(简单来说,异步就是收发两方有各自的时钟,同步的话收发两方只有一个时钟)。联想到还有一种UART,做一个简单的区分和说明:
USART支持数据在两个方向上同时传输, 发送器和接收器可以独立工作,使得数据的发送和接收能并行进行,提升通信效率
UART仅支持异步通信,功能相对单一;而 USART 除了具备 UART 异步通信功能外,还支持同步通信,功能更加丰富和灵活 。
基本参数可以按我这个来配置,其他参数保持默认

然后是对LED1的GPIO(General - Purpose Input/Output)进行配置
可以在下面直接搜索引脚PE1
鼠标左键单击此引脚,选择GPIO_OUTPUT模式
最后,在GPIO模式处进行配置
GPl0 output level:low(初始电平置低,LED1保持熄灭状态)
GPl0 mode:output Push Pull(输出模式选择推挽输出,后面推荐一本书有详细讲解)
GPI0 Pull-up/Pull-down:No pull-up and no pull-down(无上拉或者下拉电阻)
Maximum output speed:low(选择低速模式)
USER LABEL(截图没截上):可以自行命名对这个引脚进行命名,我命名为LED1
三、时钟配置

如图,红框标注的部分尤其要注意,将8mhz修改为16mhz,因为根据数据手册,我们可发现这个板子的外部高速晶振是16Mhz的。
其他的参数可参考我的配置,进行修改,如下图

四、生成工程
比较复杂的工程的话,建议勾选这个选项,之后会对应每个外设生成对应的.c.h文件,这样你的主函数会显得十分简洁。最后,选择IDE为MDK,并且对我们的工程选择路径并命名即可。

点击右上方GENERATE CODE即可生成工程
五、编写代码
打开main.c,添加头文件和串口重定向函数



int fputc(int ch, FILE *f)
{
// 合理超时设置(100ms)
HAL_StatusTypeDef status = HAL_UART_Transmit(&huart2, (uint8_t*)&ch , 1, 100);
// HAL_UART_Transmit(&huart2, (uint8_t*)&ch , 1, 100);
//
// 错误处理(可选)
if (status != HAL_OK)
{
// 可添加错误处理代码,如点亮错误LED
HAL_GPIO_TogglePin (LED2_GPIO_Port ,LED2_Pin );
HAL_Delay (100);
Error_Handler();
}
return ch;
}
然后,在while1(),中添加相应代码

printf ("love \r\n");
HAL_GPIO_TogglePin (LED1_GPIO_Port ,LED1_Pin );
HAL_Delay (1000);
最后,在魔术棒选项卡中TARGET进行配置


选择使用软件自带的MicroLib,根据我的MDK版本选择v6。
六,下载烧录(由于STLINK为V3版本,版本较高,使用原来ST_LINK 软件只能烧录V2版本)
法一,高版本的MDK可以使用该软件直接进行下载

编译通过后会生成.hex文件,然后点击烧录即可
法二,可以使用STM32CUBERrogrammer烧录二进制文件进行下载
点击连接,在下方提示框中会看到连接成功
然后,选择需要烧录的二进制文件


烧录成功
七、实现效果
LED1

串口数据发送到PC端

小结
本文以最基础的方式进行项目实现的讲述,显得较为繁琐,但还是想通过这样的方式让更多朋友可以参与到我们的嵌入式开发之中。在后面的测评中,会稍微省略一些次要内容,但涉及关键部分的讲述仍然会详细讲述。
最后,为刚进入嵌入式开发,尤其是基于STM32开发的朋友们推荐一本我们大二时期上课用过的基本教材,个人觉得对于基础学习十分有必要。


以及我们老师在B站的视频讲解,更为清晰西邮 严老师
更多推荐



所有评论(0)