两个表比对使用update_STM32 LL库之定时器的使用

STM32cubeMx用过的小伙伴应该都知道,初始化外设很方便很简单,也减少自己配置外设的错误率。但是有个问题也导致一些伙伴放弃使用cubeMx,就是cube基于的HAL库生成的代码编译出来占用空间大,用起来方便但是出现问题不好查找,还有就是运行效率不够高。所以st又推出了LL库,LL库同样可以和stm32cubeMx配合起来。

最近用到定时器,就把基于LL库如何使用定时器做个总结。我使用的是stm32F031K6的芯片,有的系列st的LL库可能还在更新之中。

首先就是把自己的stm32CubeMx升级为最新版本,确保已经集成了LL库。

定时器我用到两个:一个是tim17用来作为计数,10ms产生一次中断。 一个是tim3用来做pwm捕获输入。如下如所示:

a6bdc82f7f5d7715c54c9c330beb7ead.png

再看tim17的详细配置:(这个配置和使用HAL库的时候是一样的,记得要使能中断)

ba1f1ded822362d14f2dfde9e68b9d20.png
566b332bb5e9d38ab31b3782429ca3a8.png

再看下tim3的配置,配置通道1作为捕获输入:

31e45a3693058cd2017ef1d565431093.png
bc8b6b901a12c5d81e84fec267aa395b.png

这样配置好以后生成代码。LL库就不想HAL库封装的那么好,函数接口也不一样。所以想让定时器运行就需要深入看一下定时器的参考手册部分。

定时器17启动的以及中断函数代码如下:

void user_tim17Init(){LL_TIM_EnableIT_UPDATE(TIM17);LL_TIM_EnableCounter(TIM17);}void user_tim17IRQ(){if(LL_TIM_IsActiveFlag_UPDATE(TIM17)){LL_TIM_ClearFlag_UPDATE(TIM17);}}

定时器3的pwm捕获功能的代码如下:

void user_dht11Init(){LL_TIM_EnableIT_CC1(TIM3);LL_TIM_EnableIT_UPDATE(TIM17);LL_TIM_ClearFlag_CC1(TIM3);LL_TIM_SetCounter(TIM3,0);LL_TIM_CC_EnableChannel(TIM3,LL_TIM_CHANNEL_CH1);LL_TIM_EnableCounter(TIM3);}void user_tim3IRQ(){if(LL_TIM_IsActiveFlag_CC1(TIM3)) //捕获到了下降沿{  valueBuf[valueCount] =LL_TIM_OC_GetCompareCH1(TIM3); LL_TIM_ClearFlag_CC1(TIM3); valueCount++;  LL_TIM_SetCounter(TIM3,0);}}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能门锁系统是一种智能家居应用,可以通过指纹识别、密码输入或者手机APP等方式进行开锁。在本方案中,我们使用STM32F103ZET6芯片作为主控制器,采用指纹识别和密码输入两种方式进行开锁。 1. 硬件设计 主控制器:STM32F103ZET6芯片 指纹模块:R305指纹模块 OLED显示屏:SSD1306 0.96寸OLED显示屏 按键:4个带灯按键 步进电机:28BYJ-48步进电机 2. 软件设计 2.1 指纹识别 指纹识别是本系统的重点,我们使用R305指纹模块进行指纹识别。首先,在主控制器上初始化串口,配置波特率为57600。然后,通过串口与R305指纹模块通信,发送指令进行指纹录入、指纹搜索等操作。 指纹录入: 当用户需要录入指纹时,系统会提示用户按下指纹,然后通过R305指纹模块进行录入。指纹录入成功后,系统将指纹特征值保存在EEPROM中,并将录入成功的信息显示在OLED屏上。 指纹搜索: 当用户需要开锁时,系统会提示用户按下指纹,然后通过R305指纹模块进行指纹搜索。如果搜索到指纹特征值与EEPROM中保存的特征值匹配,则示识别成功,系统将开锁信息显示在OLED屏上。 2.2 密码输入 除了指纹识别,用户也可以通过密码输入方式进行开锁。在主控制器上通过GPIO口连接4个带灯按键,分别代数字1-4。当用户按下按键时,系统会记录按键状态,当按键数量达到设定的密码长度时,系统将按键状态与预设密码进行比对,如果匹配则示开锁成功,系统将开锁信息显示在OLED屏上。 2.3 步进电机控制 当系统识别成功后,需要控制步进电机进行开锁。在主控制器上通过GPIO口配置步进电机驱动模块,通过PWM控制步进电机旋转。步进电机旋转一定角度后,门锁将自动打开。 3. 总结 本方案使用STM32F103ZET6芯片作为主控制器,采用指纹识别和密码输入两种方式进行开锁。通过R305指纹模块进行指纹识别,通过GPIO口连接4个带灯按键进行密码输入,通过步进电机驱动模块控制门锁开关。这个智能门锁系统可以提高家庭安全性,并且便于用户使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值