STM32 HAL库 CubeMX配置 定时器学习 F103C8T6

须知

开发板:STM32F103C8T6最小系统板

编译环境:Keil5 MDK

辅助软件:STM32 CubeMX

课程教学:基于正点原子HAL库学习教程

其余配件:江科大STM32配件包 和 示波器一台

备注: 因为这块开发板没有基本定时器,所以本文也没有基本定时器的内容

            本文1.3和2.1部分的标题不知道为什么显示不对

            大家凑合一下应该还是看得懂标题的


一. 通用定时器

1.1 定时器中断

1.1.1 实现目标

我们这里目标为用定时器2实现LED以500ms为间隔亮灭

注意LED接PA6


1.1.2 CubeMX配置

 配置系统线


配置时钟

这里用高速就行了,所以低速就不设置了


配置GPIOA6


 配置定时器2

注意Psc和Arr都需要减1所以应该设置为7199和4999     


配置NVIC


 设置时钟频率并生成工程

这里有个便捷方法,就是在红框里面输入72,然后按下enter,再点击OK

这样CubeMX就会帮我们自动配好其他的

这样我们的CubeMX就写好了,接下来是代码部分


1.1.3 程序编写

这里我们要先在主函数中给中断使能

HAL_TIM_Base_Start_IT(&htim2);          //使能中断

然后我们在主函数下面加上

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM2)        //判断是否为定时器2产生的中断
    {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_6);//GPIOA6电平翻转
    }
}

再然后我们编译并下载程序,我们就会发现在PA6上的LED以500ms为间隔亮灭了


1.2 定时器输入比较(PWM)

1.2.1 实现目标

我们的目标是实现LED的呼吸灯,同时我们在旁边点亮一个LED来作为对比

注意一个LED接PA0,另一个LED接PA6


1.2.2 CubeMX配置

这里的配置和上面的定时器中断开始和结尾是一样的

所以看过上面部分的朋友可以直接看定时器部分的配置

但需要注意这里不用配置NVIC

配置系统线


配置时钟

这里用高速就行了,所以低速就不设置了


配置GPIOA6


配置定时器2

这里附上一张总的引脚定义图,可以作为参考

接了下来我们配置定时器2 PWM

具体原理我就不讲解了,不懂的去百度都有


设置时钟频率并生成工程

这里有个便捷方法,就是在红框里面输入72,然后按下enter,再点击OK

这样CubeMX就会帮我们自动配好其他的

这样我们的CubeMX就写好了,接下来是代码部分

1.2.3 程序编写

首先我们需要定义一个全局变量

uint16_t Pwm;    //PWM控制

记下来我们在主程序while前面加入这句代码

HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);       //开启 定时器2 PWM通道1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值