标题:
STM32F407输出可调spwm
[打印本页]
作者:
whisper_0311
时间:
2021-11-23 10:00
标题:
STM32F407输出可调spwm
spwm可调载波频率20-100khz,正弦频率200-10khz
index_wave运行结果.png
(61.69 KB, 下载次数: 72)
下载附件
2021-11-23 17:32 上传
制作PWM表的py脚本
#! python3
#coding=utf-8
"""
Python版本:3.x
计算不同配置下呼吸灯的周期
运行方式:
在命令行中输入:python count.py
运行结果:
打印出当前配置中一个呼吸周期的时间
"""
#PWM点数
POINT_NUM = 110
#周期倍数
PERIOD_CLASS = 10
#幅值等级
AMPLITUDE_CLASS = 1
#定时器定时周期
TIMER_TIM_Period = 2**10
#APB1定时器分频
TIMER_TIM_Prescaler1 = 235
#APB2定时器分频
TIMER_TIM_Prescaler2 = 470
#STM32系统时钟频率和周期
f_hclk = 168000000
#定时器计时频率
f_pclk1 = f_hclk/2
t_pclk1 = 1/f_pclk1
f_pclk2 = f_hclk
t_pclk2 = 1/f_pclk2
#APB1定时器update事件周期
t_timer1 = t_pclk1*TIMER_TIM_Prescaler1*TIMER_TIM_Period
#APB1每个PWM点的时间
T_Point1 = t_timer1 * PERIOD_CLASS * AMPLITUDE_CLASS
#APB1整个呼吸周期
T_Up_Down_Cycle1 = T_Point1 * POINT_NUM
print ("APB1总线定时器呼吸周期:",T_Up_Down_Cycle1)
#APB2定时器update事件周期
t_timer2 = t_pclk2*TIMER_TIM_Prescaler2*TIMER_TIM_Period
#APB2每个PWM点的时间
T_Point2 = t_timer2 * PERIOD_CLASS * AMPLITUDE_CLASS
#APB2整个呼吸周期
T_Up_Down_Cycle2 = T_Point2 * POINT_NUM
print ("APB2总线定时器呼吸周期:",T_Up_Down_Cycle2)
复制代码
STM32主程序:
#include "stm32f4xx.h"
#include "./led/bsp_breath_led.h"
#include "./usart/bsp_debug_usart.h"
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/*初始化串口*/
Debug_USART_Config();
printf("\r\n 欢迎使用野火 STM32 F407 开发板。\r\n");
printf("\r\n 呼吸灯例程\r\n");
printf("\r\n RGB LED 以呼吸灯的形式闪烁\r\n ");
/* 初始化呼吸灯 */
//输入参数:频率
//输入范围:200~10000
//单位:Hz
BreathLED_Config(10000);
while(1)
{
}
}
/*********************************************END OF FILE**********************/
复制代码
野火的代码下载:
单色呼吸灯代码.7z
(464.56 KB, 下载次数: 28)
2021-11-23 17:35 上传
点击文件名下载附件
载波和正弦频率可调
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1