STMCU小助手
发布时间:2023-1-13 19:00
|
一、开发板平台简介:; o d& H) h* @ 1、开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6, Y9 Z: s* q! N0 | (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex®-M46 A+ w' O7 P" g& [3 C (4)开发板主芯片主频:80MHz! z/ I2 c9 R, N2 T3 ]8 m, @ (5)开发板主芯片Flash大小:256KB (6)开发板主芯片RAM大小:64KB
- `; O x0 \+ ~/ X; g# P4 ~: T 2、LED灯资源$ ?4 i# d2 O/ v* m6 }' ^1 d b (1) STM32L431RCT6开发板共5个LED灯资源,其中一个红色LED为系统指示灯,指示开发板供电系统是否正常,如供电系统正常,红色LED为上电常亮状态,硬件原理图如下图所示:, S9 U0 d& d' K0 e* o7 `
(2)其他四个LED灯为黄绿色可控LED,高电平点亮、低电平熄灭,计划用LED常亮验证看门狗的作用,硬件原理图如下图所示:
3、TIMx定时器 STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。 此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟。' i# t Q( p. m 9 o, Z) K( n0 m- s0 d( t" ~ 3 n" a( O/ Z/ Q' C; M4 y 二、Timer2定时器实验过程 1、新建STM32CubeMX基础工程& \0 w- z5 F& w# B3 s6 Z! Q9 h (1)打开STM32CubeMX,点击“File”-->"New Project"
(2)等待打开主芯片选项界面(大约1分钟时间)。) K/ T# N+ O+ w& Y
(3)昨天搜索框中输入(或选择)所需的主芯片型号(因为我们用的是STM32L431RCT6开发板,所以此处选择STM32L431RC),然后在右下角选择STM32L431RCTx(因为开发板主芯片是STM32L431RCT6),左键双击即可打开新建的项目。' v5 n7 I8 `; X" l$ Z 0 r7 \- C y# v F5 k
. E$ G2 w: O6 {6 F (4)选择时钟源。 (1)因为开发板上有8M外部时钟,硬件原理图如下所示,所以此处选择使用外部高速时钟(HSE)。
% V& W/ g @8 w; G8 Z % g% D* J2 E" m (2)因为我们没有用到外部低速时钟(LSE),此处不做处理,如下图所示。
2、配置GPIO控制LED# i1 P: Z# S, ?* |4 R4 F& J7 @ (1)查开发板原理图得,LED1、LED2、LED3、LED4的控制引脚分别为:& {. U9 Q% Y3 z, i2 X& `# h LED1——PC0' z0 `) G" P6 {6 k! } i3 c+ w0 U/ U: ` LED2——PC1) r) y& q: M8 ~" H2 B8 } LED3——PC23 w2 Q8 j; W" B8 D LED4——PC3% E+ t8 o$ m$ U3 |2 R7 f * N: v4 N- Y4 O" p (2)配置LED的控制引脚为输出,输出频率、输出方式默认即可。 鼠标左键点击PC0,选择“GPIO_Output”,表示设置该引脚为输出模式。 鼠标左键点击PC1,选择“GPIO_Output”,表示设置该引脚为输出模式。# W4 g* E- y" b1 ` 鼠标左键点击PC2,选择“GPIO_Output”,表示设置该引脚为输出模式。 d# L! F( Z M- j/ f 鼠标左键点击PC3,选择“GPIO_Output”,表示设置该引脚为输出模式。8 M; `4 Q5 b* e0 J # V3 P# O; j, y4 l* ]
7 @& j' {0 ]% S. v- T
(3)也根据自己的需求配置GPIO的参数,如输出方式、输出频率、上拉下拉等。因为GPIO控制LED的要求比较低,此处采用默认参数即可,不用修改。
3、配置定时器TIM2 查原理图得知,串口1使用STM32L431RCT6引脚为PA9-USART1_TX,PA10-USART1_RX,引脚设置如下:6 c. p" i7 U* D/ H, R/ { (1)STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。 (2)此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟
- A( I- O7 H, N$ o L; D" X" a" ] (3)接下来是对TIM2的参数设置,参照数据手册中的RCC时钟树,TIM2内部时钟来源是PCLK1 = 80Mhz,我们的目的是每秒钟产生2次中断,所以预分频系数设置为40000-1,自动重载值为1000-1,得到的计时器更新中断频率即为80000000/40000/1000=2Hz(2Hz即0.5s):1 O+ H% \; H' d& O- g
(4)开启TIM2中断即可。 8 L- f3 s; W9 [% ] A' j+ a' N, I, E
z0 A1 p% r) S$ j9 ^* b; Y 4、配置项目工程参数8 z6 b0 N' b3 s6 d& K/ R (1)配置时钟树,用于系统内部时钟,以及各个外设时钟等。此处选择外部8M晶振作为主时钟频率,内部最大倍频80MHz。( X: r% v8 g) ~/ N s! i* S
0 l [. j3 n- j. C (2)完成配置工程。 `" V6 ?1 v* A5 J 备注:需要注意代码生成过程中的继承关系,如图所示:需要保留开发者自己编写的代码时,请根据配置设置,不然生成代码后会删除自己编写的代码(从这个方面也可以看出开发者备份自己的代码是多么的重要。)
! U+ ]5 N& M, y- x( C7 C
; O1 j2 |) S# \& g. k) z (3)生成代码。 备注:使用Generate CODE生成工程代码前,请确保文件路径无中文,否则会生成项目失败。 5 z4 j$ Q7 `4 Q: E$ C
. k) |$ x d& E& s9 D (4)工程代码生成成功。4 p% X( {& \7 {' y- h 4 |# ~) B8 e9 o" v3 G! f2 t
三、在KEIL 5中编写代码 1、使用KEIL 5(MDK)打开项目工程文件 源码使用说明:使用前必须把项目工程复制到无中文路径的文件夹下使用。 (1)找到刚才新建工程的存储路径,安装项目名称,打开项目工程.uvprojx。- _; A# ^& |; B+ u# w. d& ]6 w) X ^2 t( \ w+ k+ O
4 @7 `" B3 e! T z6 H5 [2 b 2、添加Tim2验证程序+ o# H/ w. H8 k& W (1)main.c文件中,初始化LED1、LED2、LED3、LED4默认为点亮,并在while循环中添加控制程序,如下所示:实现每隔500ms后LED1、LED2、LED3、LED4点亮和熄灭之间反转切换,并且串口每隔500ms打印一次。5 K' ?/ l( M8 I, r 备注:自己添加的代码需要在 /* USER CODE BEGIN 3 */和 /* USER CODE END 3 */之间添加,否则STM32CubeMX更新代码时,会造成自己添加的代码丢失。 : ~+ E8 J* p2 A) ]0 s
- f, f* S7 S. P' F) j (2)在stm32l4xx_it.c 文件中添加每隔500ms反转LED1、LED2、LED3、LED4,如下所示:
" @( `- w) w4 X* C
3、设置编程仿真下载模式" `6 Q# z& j) Z: \3 ^+ p! j G (1)选择Options for target ...>>Debug>>J-Link/J-JTRACE Cortex,点击Settings>>选择Port(SW),可以看到搜索成功SW Device,表示芯片可用,可以下载。 0 X! v. L2 l5 g. K+ }$ P
(2)点击编译,完成后提示“0 error(s),0 warning(s)”。 8 A) Z6 E: _3 |4 t" O6 Q- C0 G) t
! p* M* u: \, I6 D2 K s9 I (3)点击Download(或者快捷键F8),即可下载程序。. |5 F7 `, m: s7 x" u4 g5 J
(4) 如果下载程序后,没有看到LED1、LED2、LED3、LED4闪烁,可以按下述方式设置一下(Reset and run表示下载后自动复位和重启运行)。或者重新彻底断电再次上电(或按开发板的Reset按键复位MCU即可)。' t o+ g5 k: t4 @ + X$ @4 k) W2 h6 T2 D, H
& p3 Z) k L; w! g1 X; Y 4、Tim2实验效果展示0 x9 u K( f- Z+ ^- E' i2 b! q 程序烧录到开发板后,即可看到LED1、LED2、LED3、LED4初始化后每隔500ms闪烁一次。2 L$ ]& c6 _ q9 E" ^ ———————————————— 版权声明:智能小屋ZYXC $ F/ l6 [3 v1 q! i: D) P 8 {/ i; d+ F* x" z$ x |
STM32L4R9 QuadSPI Flash通讯速率优化解析 32位总线的DMA传输适配核心方案
【STEVAL-STWINKT1B评测】运行Datalog固件并记录运行时间
【STEVAL-STWINKT1B评测】数字麦/模拟麦对比测试+音频配套上位机软件开发
【板卡评测】STEVAL-STWINKT1B读取 ACC/GYRO/MAG 实时数据
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
小白也能明白的STM32的低功耗与唤醒机制
2025软件工具兔哥知道
微信公众号
手机版