本文介绍基于Proteus软件仿真实现STM32F103R6单片机输出PWM波形(其他子型号单片机类似)
Proteus软件选用Proteus8.8版本及以上
CSDN下载:
https://download.csdn.net/download/u011816009/85149272
百度网盘下载:
链接:https://pan.baidu.com/s/1ORu1_6OnpYKc70L02IYk2Q
提取码:1m2f
Keil代码与Proteus8.8仿真下载(注意要是用Proteus8.8这个版本,其他版本可能会出现异常):
#include "pbdata.h"
u16 fre;
void RCC_Configuration(void);
void GPIO_Configuration(void);
void TIM3_Configuration();
void Delay (uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
int main(void)
{
u16 arr=42000;
u16 led_dt = arr/2;
RCC_Configuration(); //系统时钟初始化
GPIO_Configuration();//端口初始化
TIM3_Configuration(arr);//定时器和pwm配置
while(1)
{
TIM_SetCompare2(TIM3,led_dt); //用的是TIM3的通道2,输出PWM 送到相应的寄存器中 //满占空比为900
GPIO_SetBits(GPIOB,GPIO_Pin_5); //LED 发光
Delay(0x2ffff);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//LED 熄灭
Delay(0x2ffff);
}
}
void RCC_Configuration(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//这个是必须的,仿真软件必须的
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//端口复用,一定在APB2的时钟线
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
}
(4)仿真结果
GIF仿真动图
CSDN下载:
https://download.csdn.net/download/u011816009/85149272
百度网盘下载:
链接:https://pan.baidu.com/s/1ORu1_6OnpYKc70L02IYk2Q
提取码:1m2f
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)