使用CubeMX完成呼吸灯实验(stm32F103C8T6)手把手!

首先需要捋清楚,呼吸灯模块的实现需要配置哪些参数:


1、需要一引脚作为输出(控制电平的逐渐增大或减小来实现LED灯亮度的逐渐增大减小)既需要配置GPIO

2、在实现电平的逐渐变化的过程中需要时钟来完成一个周期的计时,即需要配置RCC时钟和TIM计时器。

3、在下载到stm32系统时需要配置SYS(系统),以实现从电脑到单片机的烧录过程。

以上就是所有需要配置的参数了,接下来进入实操:

step1:CubeMX中GPIO的配置

至于引脚的选择,需要看单片机手册,以确定引脚的功能是否能够满足你的需求。这里需要一个引脚做输出,我们选择PC13,并选择GPIO_Output。

以PA0作为时钟的输出。左键PA0选择TIM2_CH1。

step2:RCC配置:

时钟选择:这里选择高速外部时钟:Crystal/Ceramic Resonator

这里配置时钟频率,设置最高72MHz

需要注意的是,在输入72后按下回车键会弹出一个提示框,选择OK再等待一会,CubeMX就会自动把其他部分时钟参数调整,以适应你所设置的72MHz。

这里设置TIM,选择TIM2(不同TIM 可实现的功能不同,需查相关说明),时钟来源(Clock Source)选择Internal Clock,改变通道1 的类型

关于TIM的相关知识可看这个链接:

TIMicon-default.png?t=N7T8https://blog.csdn.net/zhxiao2015/article/details/129416677

这里设置时钟的计时时间:设置方法为:[(prescaler+1)*(counter period+1)]/72000000得出的单位是秒,这里设置的wei:72*1000/72000000=0.001s

step3:SYS配置

我这里选择用STLINK下载器,故选择Serial Wirte。

到这里,所有参数配置基本完成,接下来配置文件

注意,这里自行为项目命名填在:Project Name

找到主函数:

在主函数里的while循环里编写执行函数

pwm相关知识可从以下链接学习:

PWMicon-default.png?t=N7T8https://blog.csdn.net/Naisu_kun/article/details/119214930

我们在CubeMX里设置的Tim为TIM2,所以这里启动PWM的第一个参数为TIM2,PWM通带在CubeMX里设置的为通道1,因此第二个参数为CHANNEL_1。

接下来编写函数调整占空比:

 while(ccr<1000)
        {
            ccr++;
            __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, ccr);
            HAL_Delay(1);
        }
        while(ccr)
        {
            ccr--;
            __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, ccr);
          HAL_Delay(1);
        }

函数编译及下载:

任意单击三个编译按钮中的一个,看代码是否出现错误

STLINK配置:

第一步:点击魔法棒

第二步:

第三步:

硬件连接:

一切就绪,点击下载:

这里还需要一个公对公的杜邦线,两头对准stm32的PC13和PA0,即可观察到灯逐渐变量与逐渐变暗的过程。

注意:别忘了打开stm32的开关

总结:

在系统中,使用的两个引脚为PC13和PA0:

其中PC13的作用是与PA0形成完整的回路,而PA0的作用是输出TIM计时的数值,并以该数值作为PWM波的crr,控制PWM波的占空比,以达到控制输出电压的作用。

关于呼吸灯代码部分:

1、需要注意的是两个while循环里的条件选择:第一个while循环条件为crr<1000,表示只要crr的值小于1000均会执行该循环下的命令,即在crr会在该循环实现从0逐次加1至1000,在crr=1000时跳出循环,使led灯实现逐渐变亮的过程。第二个while循环先判断它应该运行的条件,即在ccr=1000使,让其完成从1000到0的逐次递减,由此可知,该循环的循环条件应为crr不等于0,即while(crr),只有当crr变为0时才会跳出循环。

2、HEL_Delay(1)的作用:如若没有这个延时,每次ccr变化一个值时都会很快过去,会直接变亮没有逐次变量的过程。

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值