STMCU小助手
发布时间:2023-1-13 19:00
|
一、开发板平台简介:: p% k: h) l) i7 J4 Y; o. y 1、开发板资源简介 (1)开发板主芯片型号:STM32L431RCT61 [$ P8 F& I7 [( O (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex®-M4, k5 a8 [$ M% J- s/ {0 ~ Y (4)开发板主芯片主频:80MHz (5)开发板主芯片Flash大小:256KB (6)开发板主芯片RAM大小:64KB" q# {5 ?. C3 Q5 u/ V $ V! m! z, q. Y
5 y, l h$ v) y5 g, F+ @. o
- n/ y/ m' w/ V6 r+ k' [ 2、LED灯资源; N& `. }$ @5 P4 y (1) STM32L431RCT6开发板共5个LED灯资源,其中一个红色LED为系统指示灯,指示开发板供电系统是否正常,如供电系统正常,红色LED为上电常亮状态,硬件原理图如下图所示: % @* |9 n2 `. F4 z: K. ?
; K' l9 D0 ]/ B1 \$ J. I (2)其他四个LED灯为黄绿色可控LED,高电平点亮、低电平熄灭,计划用LED常亮验证看门狗的作用,硬件原理图如下图所示:
3、TIMx定时器 STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。 8 _& @+ n2 o% R) m 此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟。1 u3 `7 y$ N- {- [8 P/ m& r * a! Z6 h0 k6 S, n; d ( d% ]9 x n3 l8 H 二、Timer2定时器实验过程* V9 v* A, [/ h$ c% f9 n 1、新建STM32CubeMX基础工程/ L o: a+ U( `# j# G3 f (1)打开STM32CubeMX,点击“File”-->"New Project"% N7 p$ |+ y6 b6 P8 e# ^
# e) @# _* T2 Y3 D6 ^ (2)等待打开主芯片选项界面(大约1分钟时间)。6 R m* u' [3 e' g9 y$ t + o0 {" F N) K8 F) X# r
(3)昨天搜索框中输入(或选择)所需的主芯片型号(因为我们用的是STM32L431RCT6开发板,所以此处选择STM32L431RC),然后在右下角选择STM32L431RCTx(因为开发板主芯片是STM32L431RCT6),左键双击即可打开新建的项目。/ V: X" p& m" _ 6 m6 ]: W1 [! t6 c2 {" b, e
(4)选择时钟源。 (1)因为开发板上有8M外部时钟,硬件原理图如下所示,所以此处选择使用外部高速时钟(HSE)。
(2)因为我们没有用到外部低速时钟(LSE),此处不做处理,如下图所示。 ' g) j3 t0 z6 O s
2、配置GPIO控制LED (1)查开发板原理图得,LED1、LED2、LED3、LED4的控制引脚分别为: LED1——PC0) ?2 j: W4 g/ e7 ^% k LED2——PC1 LED3——PC2( {1 Y- _- s# e4 c A: [ LED4——PC3* w5 M; Y* w; M (2)配置LED的控制引脚为输出,输出频率、输出方式默认即可。; Q2 a4 ]$ s; t+ `! P3 d2 M4 K. ` 鼠标左键点击PC0,选择“GPIO_Output”,表示设置该引脚为输出模式。; g( |& W9 n+ j8 i# C0 H 鼠标左键点击PC1,选择“GPIO_Output”,表示设置该引脚为输出模式。 鼠标左键点击PC2,选择“GPIO_Output”,表示设置该引脚为输出模式。5 S( y4 X! v! m9 j1 f7 V6 s 鼠标左键点击PC3,选择“GPIO_Output”,表示设置该引脚为输出模式。0 L) Q! ^+ o: o' ` ) I% a2 U1 h, }: c: c0 B) b; }
0 t7 _: S G, k W$ E! O
4 g& W i- C7 N* P4 P, X (3)也根据自己的需求配置GPIO的参数,如输出方式、输出频率、上拉下拉等。因为GPIO控制LED的要求比较低,此处采用默认参数即可,不用修改。 ! w4 @ K q/ A2 ^0 O
2 \* V: I$ z8 S# ` B$ B 3、配置定时器TIM2 查原理图得知,串口1使用STM32L431RCT6引脚为PA9-USART1_TX,PA10-USART1_RX,引脚设置如下: (1)STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。( w1 P: r1 P9 F5 g0 o + ~2 Z# I1 E1 v (2)此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟9 n1 ]) S& s- P' y+ g' C! v! G/ e7 @$ ]
(3)接下来是对TIM2的参数设置,参照数据手册中的RCC时钟树,TIM2内部时钟来源是PCLK1 = 80Mhz,我们的目的是每秒钟产生2次中断,所以预分频系数设置为40000-1,自动重载值为1000-1,得到的计时器更新中断频率即为80000000/40000/1000=2Hz(2Hz即0.5s):' ~& d7 y& Q* f/ d/ S
" t) _ v! X$ l, I (4)开启TIM2中断即可。2 Z- I4 e, @7 w6 l
5 Y/ T; n. B' b' Z" k 4、配置项目工程参数 (1)配置时钟树,用于系统内部时钟,以及各个外设时钟等。此处选择外部8M晶振作为主时钟频率,内部最大倍频80MHz。' `. h& P Y' X4 \5 S - r1 s( S" l, D4 k& S
(2)完成配置工程。 备注:需要注意代码生成过程中的继承关系,如图所示:需要保留开发者自己编写的代码时,请根据配置设置,不然生成代码后会删除自己编写的代码(从这个方面也可以看出开发者备份自己的代码是多么的重要。)
(3)生成代码。 备注:使用Generate CODE生成工程代码前,请确保文件路径无中文,否则会生成项目失败。 ! `! @: Q j5 W- R
6 G) j/ O- {; p8 P( Y (4)工程代码生成成功。
' P, F. O( y6 l) c7 q& e 三、在KEIL 5中编写代码* b1 x( m4 k8 g# b0 X 1、使用KEIL 5(MDK)打开项目工程文件 ]# I2 y. M2 e0 T/ z) P3 X4 B; H. C 源码使用说明:使用前必须把项目工程复制到无中文路径的文件夹下使用。 (1)找到刚才新建工程的存储路径,安装项目名称,打开项目工程.uvprojx。2 Z: d/ z; e) G1 k1 `! s# |
$ b" e* z' g6 C# `- @ 2、添加Tim2验证程序- G1 @" y. g3 Z8 ]( t, z1 A- H (1)main.c文件中,初始化LED1、LED2、LED3、LED4默认为点亮,并在while循环中添加控制程序,如下所示:实现每隔500ms后LED1、LED2、LED3、LED4点亮和熄灭之间反转切换,并且串口每隔500ms打印一次。 备注:自己添加的代码需要在 /* USER CODE BEGIN 3 */和 /* USER CODE END 3 */之间添加,否则STM32CubeMX更新代码时,会造成自己添加的代码丢失。* J; S" Z; \, }8 P# Z* r1 R& V
8 d9 H7 d/ @- r' Y! A (2)在stm32l4xx_it.c 文件中添加每隔500ms反转LED1、LED2、LED3、LED4,如下所示: 9 \# ^# Y$ s% w3 g! F2 u$ P9 u
) j% \9 Y2 J2 u: r
3、设置编程仿真下载模式 (1)选择Options for target ...>>Debug>>J-Link/J-JTRACE Cortex,点击Settings>>选择Port(SW),可以看到搜索成功SW Device,表示芯片可用,可以下载。' y& }; `% S7 w* D0 j" U: w7 J
(2)点击编译,完成后提示“0 error(s),0 warning(s)”。3 b9 y5 Y8 U3 P 0 `% N2 g+ @& \$ q3 Z& \
: W9 b5 }7 R3 A; ?' i+ i; A (3)点击Download(或者快捷键F8),即可下载程序。; j# D& j3 W! }& u7 h+ c+ |
(4) 如果下载程序后,没有看到LED1、LED2、LED3、LED4闪烁,可以按下述方式设置一下(Reset and run表示下载后自动复位和重启运行)。或者重新彻底断电再次上电(或按开发板的Reset按键复位MCU即可)。 + o2 i# b7 k# T9 k7 u
3 d4 w7 q3 b, } ! p$ ~. c4 m; j- s9 k+ b" I& \- R 4、Tim2实验效果展示 程序烧录到开发板后,即可看到LED1、LED2、LED3、LED4初始化后每隔500ms闪烁一次。 ———————————————— 版权声明:智能小屋ZYXC , U+ F* v* n( u |
STM32L4R9 QuadSPI Flash通讯速率优化解析 32位总线的DMA传输适配核心方案
【STEVAL-STWINKT1B评测】运行Datalog固件并记录运行时间
【STEVAL-STWINKT1B评测】数字麦/模拟麦对比测试+音频配套上位机软件开发
【板卡评测】STEVAL-STWINKT1B读取 ACC/GYRO/MAG 实时数据
经验分享 | 利用TIMER定时和捕获功能实现编解码演示
STM32 LSE 不起振排查指南:五大核心原因与快速解决方案
我心中的ST中文论坛
经验分享 | 利用STM32 TIMER实现同频跟随输出示例
小白也能明白的STM32的低功耗与唤醒机制
2025软件工具兔哥知道
微信公众号
手机版