这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【液体流量检测仪DIY】2、任务分析及基础任务一的实现

共2条 1/1 1 跳转至

【液体流量检测仪DIY】2、任务分析及基础任务一的实现

高工
2025-01-27 17:43:40     打赏

本次的主要任务如下:

        基础任务:

        1. 搭建keil环境,实现开发板测试,利用定时器实现LED亮灭1秒 

        2. OLED 显示文字信息3. 继电器控制抽水泵通断

        进阶任务:

        1. 实现流量计测量功能

        2. 实现定量 100ML,200ML 水量控制

        咱们简单分析一下任务,得到一个开发板,我们手首要实现的就是开发环境的搭建,实际上F103是一个已经存在很多年并且支持多种开发库的器件,为了适应潮流,咱们本次也使用HAL进行开发,使用STM32CubeMX进行代码初始配置,通过控制LED闪烁来判断程序运行状态,正好对应的就是基础任务第一项,要求使用keil环境,这个配置的时候选择这个就可以,定时器实现LED亮灭,这里设计到了定时器和板载LED控制,其实这里还应该加入按键的采集,毕竟唯一的控制手段只有这个。

        在完成基础任务一后就要开始进行各种外设模块的驱动设计了,这里主要设计的就是OLED的显示屏的控制,目前还诶哟具体了解OLED的通信方式,通过看模块的引脚大概率是通过IIC通信的,可以通过硬件IIC进行也可以通过软件IIC模拟,继电器的控制实际上就是GPIO的输出控制,这个相对就没什么难度了。

        本次活动除了基础任务实现,也鼓励进阶任务的实现,主要就是通过流量计进行流量采集,实现精准流量的输送,这里主要设计的就是流量计的驱动设计,已经定时采集实现液体流量的累积采集。

基础任务一:

        接下来我们就是用STM32CubeMX来搭建F103的keil工程,首先检查一下是否包含F1的固件库:

image.png

        接下来通过开发板创建工程:

image.png

        接下来进行工程配置:

image.png

        接下来进行时钟配置:

image.png

        之前我们在进行时钟配置的时候都需要去PCC手动开启,这个板子生成的工程直接开启了,基本外设应该也是配置完的,那么接下来我们就主要看一下定时器配置,基本定时功能使用的是TIM3,定时10ms:

image.png

        并开启中断:

image.png

        接下我们生成工程,由于需要实现定时器控制LED亮灭,这里需要再初始化里开启定时器:

HAL_TIM_Base_Start_IT(&htim3);

        然后编写定时器中断回调函数,定时为10ms,所以计数达到100时进行LED的翻转:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if (htim->Instance == TIM3) {
    HAL_IncTick();
    
    Timer_cnt++;
    if(Timer_cnt>=100){
    Timer_cnt = 0;
    HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
    }
        
  }
}

        接下来就可以看到LD2以一个1s的间隔进行亮灭操作效果如下:

image.png





关键词: 任务一    

院士
2025-01-31 11:51:39     打赏
2楼

LED灯的闪烁要使用定时器来实现


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]