用STM32F103RCT6实现正弦波输出

该博客详细介绍了如何使用STM32F103RCT6微控制器实现频率可调的正弦波输出。通过TIM1定时器输出PWM方波,结合TIM2中断控制占空比,利用滤波电路和SerialChart软件生成正弦波形。博主通过按键调整频率,并展示了实验结果和遇到的问题,提供了代码分享链接。
摘要由CSDN通过智能技术生成

功能

使用STM32F103RCT6开发板实现频率可调的正弦波输出,并用示波器显示。

相关软件和硬件介绍

  1. keil5 //进行代码的编写与调试。
  2. Flymcu //通过串口进行程序的烧录。
  3. SerialChart //生成波形。
  4. TDS 1002 //示波器。

实现步骤

1、利用TIM1定时器实现pwm方波输出。
2、生成正弦函数取点数组。
3、利用TIM2定时器中断控制实现pwm波占空比可变。
4、通过滤波电路实现输出正弦函数波形。
5、通过按键实现频率可变。

keil软件的安装与配置

开发环境搭建正点原子的官方教程视频里介绍的很详细,里面也有 PWM的详细介绍。所关于pwm波形的产生原理这里就不再赘述了。

SerialChart软件的介绍

SerialChart软件:主要是用它来取点,我们要生正弦波就要让pwm占空比随着正弦波的变化规律来进行改变。取点就相当于于将正弦波进行分割。每一块被分割出来的正弦波都相当于是一个pwm方波。而外加电容的作用就是改变方波的斜率。从而拟合出完整的正弦波。SerialChart软件的使用需要用到串口。下面是串口的相关配置。


                
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
输出1MHz的PWM波,需要满足以下条件: 1. PWM的周期为1/1MHz = 1us。 2. PWM的占空比需要根据具体应用场景确定。 STM32F103RCT6的定时器可以实现PWM功能,以下是基本的步骤: 1. 初始化定时器,使其工作在PWM模式下。 2. 设置定时器的预分频器和计数值,以满足PWM周期要求。 3. 根据具体应用场景,设置PWM的占空比。 具体的代码实现可以参考以下示例: ```c // 初始化定时器 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 72 - 1; // 定时器计数值 TIM_TimeBaseStructure.TIM_Prescaler = 1 - 1; // 定时器预分频器 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // 配置PWM输出 TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable; TIM_OCInitStructure.TIM_Pulse = 36 - 1; // PWM占空比 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset; TIM_OC1Init(TIM2, &TIM_OCInitStructure); // 启动定时器 TIM_Cmd(TIM2, ENABLE); ``` 这里的定时器是TIM2,预分频器设置为1-1,计数值设置为72-1,这样定时器的计数周期为1us。占空比设置为36-1,这样PWM的占空比为50%。如果需要更改占空比,只需要修改TIM_OCInitStructure.TIM_Pulse的值即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值