
一、开发板平台简介: n, l% ]! Z! |7 T 1、开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P3 B% _+ n" G! H l (3)开发板主芯片内核:ARM® Cortex®-M4% W. b" C4 Q/ h. V! v (4)开发板主芯片主频:80MHz& S1 e* X* O) u x* S' N (5)开发板主芯片Flash大小:256KB/ F+ k" A% O) O1 A$ w/ l7 t( U (6)开发板主芯片RAM大小:64KB ![]() ![]() 2、LED灯资源 (1) STM32L431RCT6开发板共5个LED灯资源,其中一个红色LED为系统指示灯,指示开发板供电系统是否正常,如供电系统正常,红色LED为上电常亮状态,硬件原理图如下图所示: ![]() ) {) Z3 o- X+ }/ Q0 v; M# V (2)其他四个LED灯为黄绿色可控LED,高电平点亮、低电平熄灭,计划用LED常亮验证看门狗的作用,硬件原理图如下图所示: 4 Q4 X2 s/ O4 C2 K- R ![]() U0 S! D( E- o: U2 E6 o# A 3、TIMx定时器 STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。4 ^0 F" G4 k! ] 此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟。) a- y) G! L! F& L9 e3 i- P# |; t 1 [9 f' y9 _" }4 O 二、Timer2定时器实验过程 1、新建STM32CubeMX基础工程+ c1 ?9 r$ K8 ^ (1)打开STM32CubeMX,点击“File”-->"New Project" ![]() $ e V$ S0 u6 w: l7 g! e& v* G (2)等待打开主芯片选项界面(大约1分钟时间)。 ![]() . ?1 Z4 t! W- h. Q. S- h$ J/ p (3)昨天搜索框中输入(或选择)所需的主芯片型号(因为我们用的是STM32L431RCT6开发板,所以此处选择STM32L431RC),然后在右下角选择STM32L431RCTx(因为开发板主芯片是STM32L431RCT6),左键双击即可打开新建的项目。% S! Z5 Y5 B# v- Q! V; V3 P3 `$ E# { 8 @9 s/ ^! N3 v. P1 N+ U ![]() 5 I K1 }1 p5 v (4)选择时钟源。 (1)因为开发板上有8M外部时钟,硬件原理图如下所示,所以此处选择使用外部高速时钟(HSE)。4 j* d6 b$ `2 R4 r9 v 2 V9 O+ j$ w' N9 Q6 o ![]() # k. U4 G! ^ T1 z5 O (2)因为我们没有用到外部低速时钟(LSE),此处不做处理,如下图所示。+ I4 K' r( u: v' S4 J; } 4 p& ^" J% x0 z ![]() 2、配置GPIO控制LED (1)查开发板原理图得,LED1、LED2、LED3、LED4的控制引脚分别为:& _. o/ j* @# I. v' U$ [: @. b: h LED1——PC0 LED2——PC1, @# c" _: ?; {2 h: l- L% Z. b0 d4 [ LED3——PC2: r1 N" V. t9 H1 _ LED4——PC3 ~1 _- e. p9 p( [- j6 { ( _/ l8 ^8 c' U3 C (2)配置LED的控制引脚为输出,输出频率、输出方式默认即可。& Q% H4 I: I+ W& E7 E* V 鼠标左键点击PC0,选择“GPIO_Output”,表示设置该引脚为输出模式。 鼠标左键点击PC1,选择“GPIO_Output”,表示设置该引脚为输出模式。 鼠标左键点击PC2,选择“GPIO_Output”,表示设置该引脚为输出模式。 鼠标左键点击PC3,选择“GPIO_Output”,表示设置该引脚为输出模式。 ' z6 H1 S, m2 C" {; s* T( m ![]() ![]() 3 ^3 Z8 w$ P3 j- _ (3)也根据自己的需求配置GPIO的参数,如输出方式、输出频率、上拉下拉等。因为GPIO控制LED的要求比较低,此处采用默认参数即可,不用修改。9 ~. P2 E/ N0 f4 P* P3 ^; N! D ![]() $ j4 I6 k& v& Q9 J( {( ` o 3、配置定时器TIM2 查原理图得知,串口1使用STM32L431RCT6引脚为PA9-USART1_TX,PA10-USART1_RX,引脚设置如下:% n [2 C, m& c! H D& F (1)STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。 8 ` \* U" H$ r8 W9 P (2)此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟 5 e* {5 p; ^4 T ![]() / j* b% Y0 e4 O! ^ (3)接下来是对TIM2的参数设置,参照数据手册中的RCC时钟树,TIM2内部时钟来源是PCLK1 = 80Mhz,我们的目的是每秒钟产生2次中断,所以预分频系数设置为40000-1,自动重载值为1000-1,得到的计时器更新中断频率即为80000000/40000/1000=2Hz(2Hz即0.5s): 2 K& q) e/ G9 v% l5 I ![]() (4)开启TIM2中断即可。 " z! a! m9 @* u# @5 V2 I6 d ![]() & \5 b1 t: H! P, V; C, @ 4、配置项目工程参数( W& f' q4 q: |2 O4 @ (1)配置时钟树,用于系统内部时钟,以及各个外设时钟等。此处选择外部8M晶振作为主时钟频率,内部最大倍频80MHz。( R6 M& E: E$ G. a- A8 U % f1 ~' j" B- W9 s/ s' D1 \ ![]() & _0 {$ _& l) ^, u. ^ (2)完成配置工程。- d9 E' ~! ~% l! j 备注:需要注意代码生成过程中的继承关系,如图所示:需要保留开发者自己编写的代码时,请根据配置设置,不然生成代码后会删除自己编写的代码(从这个方面也可以看出开发者备份自己的代码是多么的重要。) ' o$ X" T9 E1 H# n7 k9 |! i ![]() ![]() (3)生成代码。 备注:使用Generate CODE生成工程代码前,请确保文件路径无中文,否则会生成项目失败。, R( a9 l% \9 \2 @ ![]() (4)工程代码生成成功。# Q5 ~8 D. s$ E5 }# a" G ![]() 三、在KEIL 5中编写代码 1、使用KEIL 5(MDK)打开项目工程文件 源码使用说明:使用前必须把项目工程复制到无中文路径的文件夹下使用。 (1)找到刚才新建工程的存储路径,安装项目名称,打开项目工程.uvprojx。 : z" D4 A" V/ ]# S+ c ![]() 2、添加Tim2验证程序 (1)main.c文件中,初始化LED1、LED2、LED3、LED4默认为点亮,并在while循环中添加控制程序,如下所示:实现每隔500ms后LED1、LED2、LED3、LED4点亮和熄灭之间反转切换,并且串口每隔500ms打印一次。 备注:自己添加的代码需要在 /* USER CODE BEGIN 3 */和 /* USER CODE END 3 */之间添加,否则STM32CubeMX更新代码时,会造成自己添加的代码丢失。! I" X1 l& l/ i+ C - ?, Q: a: O8 r2 p ![]() (2)在stm32l4xx_it.c 文件中添加每隔500ms反转LED1、LED2、LED3、LED4,如下所示:$ z6 k7 r2 R( B ![]()
3、设置编程仿真下载模式+ _2 }4 \0 B9 `+ K% y# h" s- v( d (1)选择Options for target ...>>Debug>>J-Link/J-JTRACE Cortex,点击Settings>>选择Port(SW),可以看到搜索成功SW Device,表示芯片可用,可以下载。8 B! v% K# X# B1 J2 W# G8 ^ ![]() (2)点击编译,完成后提示“0 error(s),0 warning(s)”。+ k3 a5 F+ w& U6 G" K" L ![]() (3)点击Download(或者快捷键F8),即可下载程序。% l+ S7 @8 o/ ~' b# g 0 l& b8 d- k4 A) z5 |6 l8 H: w ![]() (4) 如果下载程序后,没有看到LED1、LED2、LED3、LED4闪烁,可以按下述方式设置一下(Reset and run表示下载后自动复位和重启运行)。或者重新彻底断电再次上电(或按开发板的Reset按键复位MCU即可)。 ![]() 3 B' y* u8 o: w2 Y/ h / R% i1 a2 y' N5 F5 s 4、Tim2实验效果展示4 C' _* i# l8 t9 G! j 程序烧录到开发板后,即可看到LED1、LED2、LED3、LED4初始化后每隔500ms闪烁一次。 ————————————————/ o# W z+ D+ n) E0 D4 `3 L 版权声明:智能小屋ZYXC : p- T/ w5 w. s( p: }( U& r/ v |
STM32如何分配原理图IO
【实测教程】STM32CubeMX-STM32L4之研究(ADC)
基于定时器捕获测量脉宽的应用示例
【STWINKT1B评测】2.初步测试IIS3DWB振动传感器
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)
【狂欢三】STM32C031使用TIM定时器PWM输出
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
串口通信波特率异常的解决办法