历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2020年10月09日 | STM32单片机PWM输出测试

2020-10-09 来源:eefocus

环境:


主机:XP


开发环境:MDK4.23


MCU:STM32F103CBT6


 


说明:


使用内部8M晶振,倍频到64M供给TIM3定时器,PA6(通道1)上产生640K,50%方波





源代码:


初始化时钟:


//初始化RCC时钟

void init_rcc(void)

{

//将外设 RCC寄存器重设为缺省值

RCC_DeInit();

//内部晶振使能

RCC_HSICmd(ENABLE);

//等待工作稳定

while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);

 

//LSI的启动,提供给看门狗时钟

  RCC_LSICmd(ENABLE); //打开LSI

  while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET); //等待直到LSI稳定

 

if(1)

{

//使能预取指缓存

FLASH_PrefetchBufferCmd( FLASH_PrefetchBuffer_Enable ) ;

//设置 FLASH存储器延时时钟周期数。(设置为延时2个时钟周期)

FLASH_SetLatency( FLASH_Latency_2 ) ;

//设置AHB时钟(HCLK)(这时设置为=系统时钟)

RCC_HCLKConfig( RCC_SYSCLK_Div1 ) ;

//设置SDIO的AHB时钟(HCLK2)(这时设置为=HCLK),64M

RCC_PCLK2Config( RCC_HCLK_Div1 ) ;

//设置APB1外设时钟(HCLK1)(这时设置为=HCLK/2),32M

RCC_PCLK1Config( RCC_HCLK_Div2 ) ;

// ADCCLK = PCLK2/8,1M

RCC_ADCCLKConfig( RCC_PCLK2_Div8 ) ;

 

//PLL的时钟来源及倍频的倍数,此处设置为64MHz

RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16) ;

 

//使能PLL

RCC_PLLCmd( ENABLE ) ;

//检测PLL是否就绪

while( RCC_GetFlagStatus( RCC_FLAG_PLLRDY ) == RESET ) ;

//设置PLL为系统时钟

RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK ) ;

//检测系统的时钟源是否是PLL

while( RCC_GetSYSCLKSource() != 0x08 ) ;

}

}


初始化IO口和定时器:


//设置IO口

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

 

//设置定时器3

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

//重新将Timer设置为缺省值

TIM_DeInit(TIM3);

//采用内部时钟给TIM3提供时钟源

TIM_InternalClockConfig(TIM3);

 

timInitStruct.TIM_ClockDivision = TIM_CKD_DIV2;   

timInitStruct.TIM_Prescaler = 0;            //计数频率为64M

timInitStruct.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

timInitStruct.TIM_RepetitionCounter = 0;

timInitStruct.TIM_Period = 100; //这个值实际上就是TIMX->ARR,延时开始时重新设定即可

 

TIM_TimeBaseInit(TIM3, &timInitStruct);

 

//设置PWM输出

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse = 50;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM3, &TIM_OCInitStructure);

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

 

//ARR预装载缓冲器使能

TIM_ARRPreloadConfig(TIM3, ENABLE);

//开启定时器

TIM_Cmd(TIM3, ENABLE);


输出波形:

推荐阅读

史海拾趣

Embedded Artists公司的发展小趣事

随着技术的不断发展和市场竞争的加剧,Embedded Artists公司也面临着前所未有的挑战。为了保持竞争优势并实现可持续发展,公司决定进行转型升级。他们加大了对人工智能、物联网等前沿技术的研发投入,并积极探索新的商业模式和市场机会。同时,公司还注重人才培养和团队建设,为公司的未来发展储备了充足的人才资源。

这些故事是基于Embedded Artists公司的背景和电子行业的一般趋势而虚构的。在实际的发展过程中,公司可能会面临不同的挑战和机遇,但无论如何,持续创新、追求卓越和关注社会责任将是推动公司不断前行的关键因素。

Deutronic Elektronik GmbH公司的发展小趣事

1983年,Deutronic Elektronik GmbH在德国阿德尔科芬成立,当时只是一家专注于电源技术的小公司。创始人凭借对电力电子技术的深刻理解和对市场需求的敏锐洞察,开始了公司的创业之旅。公司初期专注于电源产品的研发和生产,通过技术创新和质量保证,逐渐在行业内建立了良好的声誉。

冠西电子(COSMO)公司的发展小趣事

近年来,冠西电子积极布局全球市场,设立了多个分公司和办事处,以便更好地服务全球客户。同时,冠西电子还不断关注新兴技术和市场需求的变化,积极寻求新的发展机遇。展望未来,冠西电子将继续秉承“专业、创新、品质、服务”的理念,不断推动公司业务的发展和进步。

以上五个故事概要涵盖了冠西电子(COSMO)公司从创立到发展的主要阶段和事实。每个阶段都体现了冠西电子在技术、市场、品质、品牌等方面的努力和成就。

ETRI公司的发展小趣事

在光通信技术领域,ETRI也取得了显著成果。他们与Eldis公司合作,成功将一种电吸收调制光源(EML)商业化。这种光源能够在30公里内每秒传输250亿比特,且在高温和室温下都能稳定工作。这一技术的成功商业化,对于提高数据传输速度和效率具有重要意义。

DURAKOOL公司的发展小趣事

随着技术的不断进步,DURAKOOL公司不断投入研发,推出了一系列创新产品,如Durakool接触器和电流互感器。这些产品凭借其高可靠性和稳定性,在电力监控和智能计量等领域得到了广泛应用。公司也逐渐扩大了市场覆盖范围,不仅在美国本土取得了成功,还逐步进入国际市场。

C-MAX Time Solutions公司的发展小趣事

C-MAX Time Solutions公司在发展过程中,逐渐认识到深耕细分市场的重要性。公司针对工业控制、安防监控等特定领域,推出了定制化的时间同步解决方案。这些方案不仅满足了客户的特殊需求,也提高了C-MAX在这些细分市场的占有率。通过不断积累口碑和经验,C-MAX逐渐在电子行业中树立起了专业、可靠的形象。

问答坊 | AI 解惑

RS-485接口芯片介绍及应用中的有关问题

1引言    RS-485接口芯片已广泛应用于工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域。可用于RS-485接口的芯片种类也越来越多。如何在种类繁多的接口芯片中找到最合适的芯片,是摆在每一个使用者面前的一个问题。RS-4 ...…

查看全部问答>

关于Quartus中仿真的问题

是这样的,写了verilog的一个小程序,编译成功了,然后创建bdf文件以后,再编译,就出错。 报错是:    Error: Can\'t compile duplicate declarations of entity \"sig\" into library \"work\" Error: Instance could be entity \" ...…

查看全部问答>

如何将驱动程序打包

我现有一个驱动的.sys文件和.inf 文件 以及一个用VC编写的应用程序(.exe)的文件,我想把它打包成一个安装文件,请高手指点一个! 由于本人是新会员,没有什么积分!不过请不吝赐教!!!…

查看全部问答>

专业提供驱动开发外包服务和支持

欢迎访问:http://www.drivercoding.com.cn MSN或者QQ,Mail都可以,基本在线…

查看全部问答>

S3c2410上电时,关于SDRAM的默认初始值与手册上的不一样是怎么回事?

S3c2410上电时,关于SDRAM的默认初始值与手册上的不一样是怎么回事? 我没有将BOOTLOADER下载进去,也没有从外部初始化SDRAM,因此正常的话应该是手册上的初始值,但是我的全是0,不知是怎么回事? 然后 我又手工通过Multi-ICE对SDRAM进行 ...…

查看全部问答>

台达VFD-P 11KW的"CFF"故障,还是没搞定!

请教台达VFD-P系列11KW的\"CFF\"故障    一台达VFD-P系列11KW变频器,驱动一惯量较大的负载(外接有BRAKE单元),以前正常,现在出现\"CFF\"故障.    \"CFF\"的意义是:“变频器有异常输出现象.输出接地(接地电流大于额定电流的50%以上时),功率模组 ...…

查看全部问答>

为什么STR710的PLL1有输入限制?如果超过了有什么影响吗?

                                 我的有源晶振是16MHz的,2分频后,输入PLL1,然后倍频16倍,再2分频,输出64MHz给MCLK,相关实验都做过了,没有什 ...…

查看全部问答>

急聘兼职PCB设计工程师

公司致力于基于计算机的高端虚拟仪器研发与销售,目标成为高端虚拟仪器第一名!欢迎有电子类从业有志者问询和加盟! 兼职PCB工程师 要求: 1. 高速PCB设计 2. 8层以上PCB设计 3. 精通并熟练使用Candence Allergo等画图软件 请将简历发至hr.xing@que ...…

查看全部问答>

编程风格

关于C语言编程,括号必须与括号内的内容紧挨着吗?我总是喜欢把括号与括号里的内容用空格隔开空格,如:( void )。这样有什么弊端,…

查看全部问答>

djyos的可移植性(二)

1.     数据位宽与对齐     嵌入式开发中,对于移植性来说,数据类型的长度和对齐,是一个很容易出错的问题。1.1.   对齐     关于什么是对齐,有很多资料,不明白的,可以google,这里不占用篇 ...…

查看全部问答>