STM32F103ZET6 正点原子开发板
STM32CubeMx MDK ARM V5
1、打开CubeMx新建工程File->NEW Project(可能会出现下面的弹窗直接点击Cancel,这是在下载最新的芯片类型但是会很慢,不如直接度娘搜索资源包安装来的快)选择对应的芯片类型,然后点击右上角的Stare Project 2、点击RCC,在High Speed Clock 选择Crystal/Ceramic Resonator (HSE 高速时钟 LSE 低速时钟) ①表示使用单片机内部时钟源 ②表示使用外部时钟源 我使用的开发板外部时钟是8MHz,配置后面时钟频率更具实际情况配置。F1系列SYSCLK(系统时钟)最高为72MHz,F4系列是168MHz。 3、配置时钟和时钟通道的模式,我的开发板LED灯对应的通道就是TIM3的CHANNEL2通道(要是不同合理变通);
Prescaler(PSC-16 bits value ):设置预分频系数为72-1 CounterMode 设置计数模式 Counter Period(AutoReload Register)设置自动重装载值为500-1 PWM输出频率计算 72000000/72/500=2000hz,也就是2Khz CKD:定时器分频 auto-reload preload 自动装载:定时器中断需要使能 CH Polarity通道极性高或者低 选择LOW 设置PWM的占空比参数时,数值越大电位越低。反之设置为High时数值越大电位就越大(这是我通过示波器测试的结论,有一定的巧合成分不是非真理) Pulse 设置占空比的值 output compare preload 输出比较预装载值 使能TIM3的NVIC中断优先级 4、工程建立 点击Code Generator勾选如图所示的选项
HAL_TIM_PWM_Start();//PWM启动函数 HAL_TIM_PWM_Stop();//PWM停止函数 __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, dutyCycle);//设置占空比 //dutyCycle 为(整数)这是表示占空比多少的值
在main.c添加