一、开发板平台简介: 1、开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P8 |$ L* g1 ?: ?, R! w, I2 B (3)开发板主芯片内核:ARM® Cortex®-M4. R! Q8 w5 ^, x0 S/ R5 ] (4)开发板主芯片主频:80MHz% @( w+ W5 N V/ E& c (5)开发板主芯片Flash大小:256KB (6)开发板主芯片RAM大小:64KB (7)其他外设:请参考芯片手册: W6 @* e' L3 ~/ j# p 9 r# N' w+ w8 J+ J- f ( q% ~6 h) C6 u; c 8 b9 ~* q" v* G: b/ l6 I 2、串口简介* n4 f% F" i# T 串口全称为串行通讯接口,即数据在通信线上一次传输一位,按先后一定顺序传输。我们通常所说的单片机串口准确来说应该是串行异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART),使用TTL电平,串口需要RXD、TXD、GND三根线进行通信。 " ~6 M+ }8 H/ }6 I7 A (1)我们选用的STM32L431RCT6开发板串口1已通过USB转TLL串口芯片CH340G引出,使用时,只需要用公对公USB线连接电脑即可(注意也得需要安装CH340G驱动),后期验证试验也试验该串口1进行。0 [- L" R) Q0 z: c) a (2)开发板上的其他串口已通过排针引出,为TTL电平,通信的时候需要注意选择对应的电平模块,如USB转TTL串口模块等。 4 @% |* k& s: T$ Q" g4 c 二、新建工程' T1 ~% y& U8 E& _" k- G8 b8 M 1、新建STM32CubeMX基础工程 (1)打开STM32CubeMX,点击“File”-->"New Project"9 T3 ?& }) O5 f* b ( t$ e( }; V; {( k4 q! L+ m & R% ]- c6 F& p: B8 u2 V, P) B5 n/ b (2)等待打开主芯片选项界面(大约1分钟时间)。 . v5 R r0 g2 P% @$ Y& i! w( `/ o6 p$ ? / }) S' d! E( _7 F+ J$ e& R& M6 X (3)昨天搜索框中输入(或选择)所需的主芯片型号(因为我们用的是STM32L431RCT6开发板,所以此处现在STM32L431RC),然后在右下角选择STM32L431RCTx(因为开发板主芯片是STM32L431RCT6),左键双击即可打开新建的项目。( \5 q- }" J5 W; ]/ D* f3 _7 i (4)选择时钟源 (1)因为开发板上有8M外部时钟,此处选择外部高速时钟(HSE)。5 L' |" C' C" F (2)因为我们没有用到外部低速时钟(LSE),此处不做处理。 % ]$ @2 x' I+ q& h; b 2、配置GPIO控制LED 备注:LED灯用来指示系统是否正常工作。 (1)查STM32L431RCT6开发板原理图得LED1控制引脚为PC0,则配置GPIO的引脚PC0。 鼠标左键点击PC0,选择“GPIO_Output”,表示设置该引脚为输出模式。8 I( @8 q7 k; l$ J$ `( G2 A9 `* ] ) K: ]. d7 Z2 q0 o) f5 t4 c (2)根据自己的需求配置GPIO的参数,如输出方式、输出频率、上拉下拉等。因为GPIO控制LED的要求比较低,此处采用默认参数即可,不用修改。8 `, U9 y7 H1 Z- x/ w* Z 3 ?- u7 z( v' N+ f 3、设置串口1参数# g' C1 K, {4 _' { 1、查原理图得知,串口0使用STM32L431RCT6引脚为PA9-USART1_TX,PA10-USART1_RX,引脚设置如下:" I( U2 v7 S1 q8 s; y( g 0 w2 E5 o7 I: p. W: t. ~$ v (1)序号1用来设置串口收发引脚的选择。% C1 B. P2 ?. |, ]+ L) c% m (2)序号2-3-4-5-6设置串口参数,如波特率115200、8位、NONE无奇偶校验等。 ]/ d Y* O' E9 j2 r9 \ ) n! N1 Z: y) D# P. M3 j; @5 B 4、配置项目工程参数 (1)配置时钟树,用于系统内部时钟,以及各个外设时钟等。此处选择外部8M晶振作为主时钟频率,内部最大倍频80MHz。 + `- _" a4 K: g0 q5 J& U! z (2)完成配置工程。 备注:需要注意代码生成过程中的继承关系,如图所示:需要保留开发者自己编写的代码时,请根据配置设置,不然生成代码后会删除自己编写的代码(从这个方面也可以看出开发者备份自己的代码是多么的重要。) 0 D8 d+ ^0 y0 m( q8 g5 J . k9 [4 h9 t4 [( t (3)生成代码。 0 M" V. l* |/ Z: p, k 三、在KEIL 5中编写代码 1、使用KEIL 5(MDK)打开项目工程文件" _* j _6 n2 R1 |! w (1)找到刚才新建工程的存储路径,安装项目名称,打开项目工程。 1 x7 M: b1 a4 } ~0 S (2)添加每隔500ms,LED1闪烁一次的系统提示,用于提示程序运行正常。 0 \5 E5 d1 A: x2 k8 f8 A; Q % E9 S9 f0 L5 f1 [. \ 2、添加使用printf函数打印log的代码 (1)在项目选项中勾选Use Micro LIB选项,勾选该项目后,可以正常使用基本的C语言库。+ _4 D9 M- S% T$ N& m % {2 Z9 Y# C$ ]7 \" D: K (2)printf函数会调用fputs函数,fputs函数为弱定义函数,即使用__weak修饰符修饰的函数,可通过自己编写函数定义覆盖原定义,我们在此处重写fputs函数。在usart.c中添加如下代码。9 ^+ o* W {1 n$ s/ Z - J& A$ g; D8 j 备注:开发者自己的代码需要注意添加位置,一定要放置到一对《USER CODE BEGIN和USER CODE END》之间,避免重新生成工程后被覆盖。3 @% h$ J9 o4 e( N$ B. O7 d; t$ j 9 ]% q! v% p3 \7 {. {% r# P& ? 代码段如下:可直接复制使用。
(3)使用printf打印log数据。需要注意main.c位置添加"stdio.h"头文件(printf的函数声明头文件)。 8 s+ L5 A* s9 X" y
3、设置编程仿真下载模式3 _" Q, ~ ^( ?$ d G (1)选择Options for target ...>>Debug>>J-Link/J-JTRACE Cortex,点击Settings>>选择Port(SW),可以看到搜索成功SW Device,表示芯片可用,可以下载。. D9 Y2 H$ Z" A# k 9 A3 j' ?% V# L0 B! {" ~ (2)点击Download(或者快捷键F8),即可下载程序。 ; s, @/ n1 ~" L2 Z 4 {4 | \1 ~; N) P" o0 M : u' R! d* X7 d" ~7 u$ }* a, Z (3) 如果下载程序后,没有看到LED1灯闪烁,可以按下述方式设置一下(Reset and run表示下载后自动复位和重启运行)。或者重新彻底断电再次上电(或按开发板的Reset按键复位MCU即可)。4 ?# }" c* _! M/ g 6 d4 O9 z7 l! g 4、查看串口printf函数打印log效果) I$ s4 h7 z# {, H K/ L0 }0 L (1)设置串口助手参数为:115200、NONE、8、 1(和代码中串口初始化参数一致)。 (2)设置成功后,就可以看到串口打印的效果。每隔500ms闪烁LED1指示灯一次,且串口输出一个log。7 u3 @3 D+ T( d; p / n; k- K* S# ` ———————————————— 版权声明:智能小屋ZYXC/ m, ~) {& A2 ^ ^ |
【STM32C0测评】外部中断控制小灯
基于STM32L476+64M QSPI接口PSRAM(IPS6404L)开源分享(含源码)
意法半导体最具性价比、速度最快的单核MPU STM32MP13现已支持运行RTOS
【NUCLEO-U083RC评测】移植TouchGFX并实现无接触翻页
[NUCLEO-C031C6评测] 驱动LCD 第三步 显示颜色块
[NUCLEO-C031C6评测] 驱动LCD 第二步 初始化屏幕
[NUCLEO-C031C6评测] 驱动LCD第一步
【STM32MP135-DK】裸机开发
STM32MP135F-DK 开箱&开发环境搭建&硬件设计分析
【STM32U599】4.引入RTC与MVP开发