Proteus仿真stm32f103r6输出PWM/正弦波

资料下载地址:Proteus仿真stm32f103r6输出PWM/正弦波

一、仿真图

Proteus仿真stm32f103r6输出PWM/正弦波

 

二、程序 

#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);//                                        if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_7)== Bit_RESET)
//                                                        {
//                                                                //LED 发光
//                                                                GPIO_SetBits(GPIOB,GPIO_Pin_5);
//                                                         }
//                                        else
//                                                        {
//                                                                //LED 熄灭                                 
//                                                                GPIO_ResetBits(GPIOB,GPIO_Pin_5);
//                                                         }}        
}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);
}void GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;//PWMGPIO_InitStructure.GPIO_Pin= GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;      //通过PWM控制,端口为复用方式输出GPIO_Init(GPIOA,&GPIO_InitStructure);//LEDGPIO_InitStructure.GPIO_Pin= GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;      GPIO_Init(GPIOB,&GPIO_InitStructure);//BUTTONGPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_Init(GPIOC,&GPIO_InitStructure);
}void TIM3_Configuration(arr)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;TIM_OCInitTypeDef TIM_OCInitStructure;             //PWM的结构体GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//TIM3 复用功能部分映射,可以此找到对应的管脚//关于部分映射可以参考“STM32参考手册”119面//定时器初始化TIM_TimeBaseStruct.TIM_Period=arr;//初值TIM_TimeBaseStruct.TIM_Prescaler=2;//预分频//不分频,在晶振为72MHz的情况下,定时器执行到899后即会溢出,表示计数满TIM_TimeBaseStruct.TIM_ClockDivision=0;TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruct);//pwm初始化TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;             //使用模式1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //使能位TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;     //设置输出极性,一定注意TIM_OC2Init(TIM3,&TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);            //与装载使能,不会说执行一次后就不执行了TIM_Cmd(TIM3,ENABLE);}
/*PWM不是中断,所以不需要设置中断优先级 */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/341937.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习笔记——继承和动态内存分配

目录 一、继承 二、动态内存分配 三、继承的细节 四、动态内存分配细节 五、一个动物园管理系统 继承和动态内存分配是C中两个重要的概念 一、继承 继承是C中面向对象编程的一个重要特性,它允许我们创建一个新类,该类从现有的类中继承属性和方法&…

oracle-事务一系列理解

一个事务开始后,会被分配一个唯一的id号,xid,xid不仅是一个编号也是一个地址。 事务表 存在undo表空间的某一个段的段头块,最多存放47个事务,事务开始的时候,先将信息写入这个表,所以一个undo段…

【android】rk3588-android-bt

文章目录 蓝牙框架HCI接口蓝牙VENDORLIBvendorlib是什么 代码层面解读vendorlib1、 vendorlib实现,协议栈调用2、协议栈实现,vendorlib调用(回调函数)2.1、 init函数2.2、BT_VND_OP_POWER_CTRL对应处理2.3、BT_VND_OP_USERIAL_OPE…

Golang的API项目快速开始

开启一个简单的API服务。 golang的教程网上一大堆,官网也有非常详细的教程,这里不在赘述这些基础语法教程,我们意在快速进入项目开发阶段。 golang好用语法教程传送门: m.runoob.com/go/ 编写第一个API 前提:按照上一…

基于单片机的智能导盲杖设计(论文+源码)

1.系统设计 本文基于STC89C52单片机微处理器进行研究的一种智能手杖系统需要同时实现超声波自动测距、语音自动报警、距离自动显示、电机震动报警、led指示灯灯光明灭自动提醒等多种功能,在手机通信提醒模式下手机用户可拨打固定手机电话信号实现手机通信提醒功能。…

几款优秀科学开源计算软件介绍

有一些比较优秀的软件,它们在科学计算、数据处理和分析方面具有广泛的应用和功能。以下是一些比较知名的软件: SciPy:SciPy是一个非常流行的科学计算库,提供了大量的数学函数和算法,用于解决各种科学问题。它支持多种操…

互联网大厂职场各职级P6/P7和核心能力

目录 具体能力要求总结 具体能力要求 专业工匠 p5 被别人带领p6 独立完成项目全流程,指导 2-3 人 乐队指挥 p7 带行政团队 7-10 ,项目团队,专项团队,复杂系统设计 1-3 个一般系统构成p8 领域专家 垂直 3 个团队 ,横…

全志V853开发板原理图

本章节将对开发板几个主要的部件的原理图进行说明,方便快速上手开发板的硬件资料。 开发板硬件框图如下: 模块介绍 GPIO 分配 此表格为 V853 部分重要的 GPIO 的分配表,> 表示对IO的另外一个复用,完整的 GPIO 分配请参阅原理…

“数据要素×”行动计划发布,粮食安全监管如何应变?

近日,国家数据局发布“数据要素”三年行动计划(2024-2026年),在“数据要素现代农业“部分提到:提升农业综合生产能力,支持农业生产经营主体和相关服务企业融合利用气象、土壤、农事作业、病虫害、市场等数据…

Open CASCADE学习|参数化球面的奇异性

参数曲面的奇异性是一个相对复杂的概念,它涉及到参数曲面的几何特性和参数化过程中的一些特殊情况。参数曲面通常用于描述三维空间中的复杂形状,通过参数方程将二维参数域映射到三维空间中。然而,在某些情况下,参数曲面可能会表现…

Python算法例35 丑数Ⅰ

1. 问题描述 丑数的定义是,只包含质因子2、3、5的正整数,例如6、8就是丑数,但14不是丑数,因为它包含了质因子7,本例将检测一个整数是不是丑数。 2. 问题示例 给出num8,返回True;给出num14&am…