历史上的今天
今天是:2025年06月15日(星期日)
2019年06月15日 | STM32cubeMX 基于stm32的定时器实现定时1秒LED闪烁
2019-06-15 来源:eefocus
软件:
STM32CubeMX V4.25.0
keil_u5
固件库版本:
STM32Cube FW_F1 V1.6.1
硬件:
OneNet 麒麟座V1.4
在STM32CubeMX中新建项目,选择正确的MCU型号

首先设置RCC和SYS,如下图

启用TIM1,选择内部时钟源(Internal Clock)。

然后根据板子实际情况设置时钟(麒麟座外部晶振是12M,STM32F103x的最高主频是72M),如下图

GPIO设置 PC7和 PC10为GPIO_OUTPUT, (这是麒麟座V1.4的四个LED管脚其中的两个)

设置其中一个默认为高电平,另一个默认为低电平,User Label分别是LED1和LED4。

设置TIM1,启用中断

由于TIM1是挂在APB2总线上(如何判断当前计时器在哪个总线,文章最后会描述方法),查看时钟树我们知道APB2当前频率为72MHz,我们希望每秒钟发生2次中断,就把预分频系数设置为36000-1,自动重载值为1000-1,得到的计时器更新中断频率即为72,000,000/36000/1000=2Hz。此时定时为0.5秒,若要实现定时1秒,则将1000改为2000

点击任务栏的生成代码图标

8、生成工程,并添加相关程序;
首先,main.c程序中添加(放置于定时器配置之后)开启 TIM1计时中断;
/* USER CODE BEGIN 2 */
/*使能定时器1中断*/
HAL_TIM_Base_Start_IT(&htim1);
/* USER CODE END 2 */
其次,在 tim.c文件中添加定时器中断完成回调函数;
/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
if (htim->Instance == TIM1){
/* Toggle LED */
HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
}
}
/* USER CODE END 1 */
史海拾趣
|
LED是利用化合物材料制成pn结的光电器件。它具备pn结结型器件的电学特性:I-V特性、C-V特性和光学特性:光谱响应特性、发光光强指向特性、时间特性以及热学特性。本文将为你详细介绍。 1、LED电学特性 1.1 I-V特性 表征LED芯片pn结制备性能主 ...… 查看全部问答> |
|
本人09年毕业学的是自动化专业,在学校的时候比较喜欢摆弄单片机一类的东西,对技术比较感兴趣,一直想往嵌入式方面发展,但是毕业的时候工作不好找,那年经济危机了,结果来到了一家制造型公司,做质量方面工作,说实话,我一点也不感兴趣,我一直 ...… 查看全部问答> |
|
嘿嘿,以前在论坛看过paul,chao关于共享中断的一些回帖,刚才在看wifi驱动的时候也看到了,现在发个帖子探讨一下。 看了一下MSDN,一目了然,就是不知道具体如何实现的。 Installable ISRs and Device Drivers Send Feedback Inst ...… 查看全部问答> |
|
我在自制的以太网rtl8019as片子上用网线连接计算机,但本地连接显示断开、没有连接、过会又有连接,很不稳定。 正常情况和本地连接上是不是只要给8019AS加电就可以看到,不用跑发送数据程序? 可能自己做的电路很不稳定,是抄的以前公司的以太网 ...… 查看全部问答> |
|
那位做过的麻烦留言 我想做PDA连接SQL数据库的中间件 PDA操作系统是wince5.0.net PDA程序开发语言是 vs2005 中间件的开发语言是DELPHI或者VS2005 我想用中间件解决操作系统间访问的局限,有时不知道什么原因连不上系统,很郁闷。 我现在只知 ...… 查看全部问答> |
|
请教一下:如果在P0口(如P0.2)外接一发光二极管和一限流电阻,再接一个+5V的VCC,能否通过改变P0.2的0、1状态使发光二极管点亮或熄灭?据了解P0口不能输出高电平,可否通过外置上拉电阻后实现以上结果?如何外置上拉电阻?… 查看全部问答> |
|
lm3s8962上的RT-Thread连载1——任务的基本管理 RT-Thread任务的基本管理 实验目的: ² 理解RTOS中任务管理的基本原理,了解任务的基本状态及其变迁过程; ² 掌握RT-Thread任务管理子系统中的 ...… 查看全部问答> |
|
在dsp(DM642)上使用PCI_dspIntReqSet()函数,不能产生中断。在硬件仿真下测试,我使用万用表测量了INTA#脚,始终为高,但在发中断与清中断切换时,用windriver观察HSR的值在00000003和00000001之间切换,说明两条语句执行了,主要程序如下:希望 ...… 查看全部问答> |




