历史上的今天
返回首页

历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2021年09月27日 | stm32-PWM控制输出不同占空比

2021-09-27 来源:eefocus

main.c


#include

 #include  

/*********************************************************************************************************

*                                           宏定义

*********************************************************************************************************/

extern void  BSP_Init (void);


void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...);

int fputc(int ch,FILE  *f);

char *itoa(int value, char *string, int radix);


/*********************************************************************************************************

* 名    称 :main

* 功能描述 : 初始化STM32

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/ 

int main(void)

{

BSP_Init();

//不同通道设置不同占空比 

TIM_SetCompare2(TIM3,3);

TIM_SetCompare3(TIM3,50);

while(1){}

}


bsp.c


#include


void RCC_Configuration(void); /* 初始化系统时钟 */

void TIM3_Configuration(void); /* PWM配置 */


void  BSP_Init (void)

{

RCC_Configuration(); /* 初始化系统时钟 */

TIM3_Configuration(); /* PWM配置 */

}

/*********************************************************************************************************

* 名    称 :RCC_Configuration

* 功能描述 : 初始化系统时钟

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void RCC_Configuration(void)

{

SystemInit(); 


/*APB1 36MHz 配置timer时会倍频为72mhz,具体有哪些在此时钟上可跳进去查看*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3  , ENABLE);

/*APB2 72MHz 配置timer时会倍频为144mhz,具体有哪些在此时钟上可跳进去查看*/

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

}


/*********************************************************************************************************

* 名    称 :GPIO_Configuration

* 功能描述 : 初始化IO口配置

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

******************* **************************************************************************************/ 

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

    /* LED灯的配置 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出模式

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出模式最大速度50MHz

GPIO_Init(GPIOA, &GPIO_InitStructure);    

}


/*********************************************************************************************************

* 名    称 :TIM3_Configuration

* 功能描述 : 初始化定时器  PWM

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void TIM3_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

//通道3 PB0

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

//通道2 PA7

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

       

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = (100- 1); //arr  设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler = (40-1); //分频 psc  影响周期

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割,一般写0

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/* PWM1 Mode configuration: Channel1*/

TIM_OCInitStructure.TIM_Pulse =0;         // 初始值

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;    //pwm模式1

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //使能通道

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;      //高电平

//通道3 

TIM_OC3Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

    //通道2 

TIM_OC2Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

TIM_Cmd(TIM3, ENABLE); /* 使能 */

}


推荐阅读

史海拾趣

Aptina (ON Semiconductor)公司的发展小趣事

Aptina Imaging公司的起源可以追溯到其前身,一家专注于图像传感器技术的初创公司。在当时,随着数码相机的普及和消费者对图像质量要求的提高,图像传感器市场迎来了巨大的发展机遇。Aptina凭借其在图像捕捉和处理技术上的独特优势,迅速在市场中崭露头角。其创新的图像传感器产品不仅提升了相机的拍摄效果,还广泛应用于手机、安防监控等多个领域。

Cembre SPA公司的发展小趣事

Cembre SPA的创始人,以其对电子行业的深刻理解和远见,于XXXX年创立了这家公司。在初创期,他看到了电气连接和固定技术在工业领域中的巨大潜力,并决定专注于此。公司最初的产品线集中在电缆接头和固定设备上,这些产品以其高质量和易用性迅速获得了市场的认可。

ETERNA公司的发展小趣事

2014年,ETERNA成为了ATP世界网球巡回赛瑞士公开赛的指定合作伙伴。这一合作标志着ETERNA在品牌建设和市场推广方面取得了新的突破。通过与ATP的合作,ETERNA不仅成功地将品牌与高端体育赛事相结合,还进一步提升了品牌形象和知名度。同时,ETERNA还为赛事提供了精准的计时服务,展现了其在电子技术领域的实力。

BROTHER公司的发展小趣事

在电子产品领域取得一定成就后,BROTHER并没有停止前进的步伐。公司开始寻求多元化业务的拓展,以应对市场变化和风险。除了传统的缝纫机和电子产品外,BROTHER还开始涉足打印机、传真机、扫描仪等办公设备领域。通过不断创新和研发,BROTHER成功推出了一系列高品质、高性能的办公设备产品,满足了不同客户的需求。同时,公司还积极开拓新的市场领域,如智能家居、物联网等前沿领域,为未来发展奠定了坚实基础。

Amveco Toroidal Power Products公司的发展小趣事

随着电子行业的快速发展,客户对环形变压器的性能要求也越来越高。Amveco公司敏锐地捕捉到了这一市场变化,加大了在技术创新和产品升级上的投入。公司研发团队不断攻克技术难关,成功开发出了一系列具有更高效率、更低损耗的环形变压器产品,满足了客户对高性能产品的需求。同时,公司还不断优化生产工艺,提高了产品的可靠性和稳定性。

Afero公司的发展小趣事

随着Afero在国内市场的成功,公司开始将目光投向国际市场。他们设立了海外分支机构,积极参加国际展会和技术交流活动,与全球范围内的合作伙伴建立联系。通过与国际知名企业的合作,Afero成功将其物联网平台推广至全球市场,并获得了广泛的认可和应用。这些国际市场的拓展为Afero的未来发展打开了新的机遇。

这些故事是基于Afero公司的发展历程和公开信息构建的,旨在展示其在电子行业中的发展和成就。然而,需要注意的是,这些故事可能并不完全准确或详尽,因为具体细节可能涉及公司的商业机密或未公开的信息。如需更详细和准确的信息,建议直接访问Afero公司的官方网站或查阅相关新闻报道。

问答坊 | AI 解惑

基于CS5321与CS5322的多路数据采集系统

引 言    ∑一△A/D转换技术以其高分辨率和大的动态范围在数据采集系统中得到了广泛应用:但∑一△A/D转换器通常采用串行传输,因此由它实现的采集系统大多包含串并转换单元。为了达到系统设计简化,降低系统成本的目的,探讨一种直 ...…

查看全部问答>

一款液晶显示麻醉呼吸机的源码 仅供参考

使用PC104来实现,10。4寸tft显示,支持飞梭旋钮。 Aeon7500A麻醉机 -------------------------------------------------------------------------------- 1、 整机通过CE认证,安全性能达到国际先进水平 ,达到出口欧洲标准 2、 10.4”彩色 ...…

查看全部问答>

如何把u盘做成启动盘

如何把u盘做成启动盘…

查看全部问答>

8个bit变成1个char 转换问题 真的不会了

在keilc51中 我定义了 #define bReData P3^2 uchar bdata receive; 我连续一个一个的接收8个bit  怎么变换成并保存到uchar中 能否写个函数 void BitToChar(bit i,uchar Addr,uchar *rec)//i或0或1  addr就是在uchar哪个 ...…

查看全部问答>

请教一个axd里面debug的问题 ToT

请问在axd中烧录内核的时候出现: DBE Warning 0064:The image \'F:\\fic8120\\burnin_linux.axf\' was compiled w ith the FPU option 2(-fpu SoftFPA) that does not match the debugger mode $target_fpu=1(SoftVFP). 是什么问题呢?应该 ...…

查看全部问答>

PCB 抄板秘籍(双层板)

PCB抄板密技 第一步,拿到一块PCB,首先在纸上记录好所有元气件的型号,参数,以及位置,尤其是二极管,三机管的方向,IC缺口的方向。最好用数码相机拍两张元气件位置的照片。 第二步,拆掉所有器件,并且将PAD孔里的锡去掉。用酒精将PCB清洗干 ...…

查看全部问答>

GPRS FLYFOTM260控制流程

我是个新手,刚刚应用FLYFOTM260 GPRS模块,发一点用到的程序,不知对大家有没有用…

查看全部问答>

洞洞板的布局布线软件

看了小小白的文章,给大家一个洞洞板的布局布线的软件,用起来很方便,是汉化过的。…

查看全部问答>

F2833x FIR32在release模式下编译不通过

将从controlSUITE中的F2833x FIR 32-bit例子导入到CCS5.2中。在Debug模式下正常编译通过,但在Release模式下遇到了问题。编译报错: 在Console中描述问题的某一点是: \"D:/workspace_v5_2/F28335_FIR32_Example/lib/C28x_FixedPoint_Lib.lib\" ...…

查看全部问答>