历史上的今天
返回首页

历史上的今天

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

正在发生

2018年09月22日 | STM32的定时器(含中断)配置样例

2018-09-22 来源:eefocus

1. 系统时钟配置

void RCC_Configuration(void)
{
    ErrorStatus HSEStartUpStatus; 
    RCC_DeInit(); 
    RCC_HSEConfig(RCC_HSE_ON); 
    HSEStartUpStatus = RCC_WaitForHSEStartUp(); 
    if (HSEStartUpStatus == SUCCESS)
    { 
        RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB(HCLK)时钟为系统时钟 
        RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟(APB2)为HCLK时钟

        RCC_PCLK1Config(RCC_HCLK_Div2); //设置低速AHB时钟(APB1)为HCLK的2分频 
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);//选择PLL时钟源为HSE1分频,倍频为

        //9,PLLCLK = 8MHz * 9 = 72 MHz 
        RCC_PLLCmd(ENABLE); 
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); 
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
        while (RCC_GetSYSCLKSource() != 0x08); 
    } 
}

2. 为产生PWM脉冲的定时器配置

void TIMER2_Cfg(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

    TIM_DeInit(TIM2); 
    TIM_InternalClockConfig(TIM2); 
    TIM_TimeBaseStructure.TIM_Prescaler = 720-1;            //预分频系数, 此时TIMER的频率=100k
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器模式为向上计数模式
    TIM_TimeBaseStructure.TIM_Period = 1000 - 1;            //设置计数溢出大小,每计1000个脉冲就

    //产生一个更新事件。TIM_Period时长意味着TIM_Prescaler分频后脉冲频率的再分频。 
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);         //把配置写入寄存器

    //以下是TIM2中断配置

    TIM_ClearFlag(TIM, TIM_FLAG_Update);       //清中断,以免一启用中断后立即产生中断

    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //使能TIM2中断源
}

3. TIM3产生更新时间的中断配置

void NVIC_Cfg(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);           //设置中断组为1
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;           //更新事件,TIM2中断通道
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;        //响应优先级1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;           //允许中断
    NVIC_Init(&NVIC_InitStructure);                           //写入设置
}

4.定时器初始化

void PWM_Init(void)

{

    RCC_Configuration();

    TIMER_Cfg();

    NVIC_Cfg();

}

7. 打开定时器2

TIM_Cmd(TIM2, ENABLE);


推荐阅读

史海拾趣

全智景(Allvision)公司的发展小趣事

全智景公司自成立以来,一直致力于电子视觉技术的研发。早期,公司面临激烈的市场竞争和技术瓶颈,但全智景团队凭借坚韧不拔的精神,成功研发出了一款具有划时代意义的高清摄像头芯片。这款芯片以其出色的图像质量和稳定性,迅速获得了市场的认可,并推动了整个电子视觉行业的进步。这一技术突破不仅让全智景公司在市场上站稳了脚跟,也为公司后续的发展奠定了坚实的基础。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

Comclok Inc创立之初,便专注于高精度时钟芯片的研发与生产。在电子设备的智能化和精准化趋势日益明显的背景下,高精度时钟芯片成为了市场的热门需求。Comclok Inc凭借出色的技术实力和敏锐的市场洞察力,成功开发出一系列性能卓越的时钟芯片,并迅速占领市场份额。公司不仅在国内市场取得了成功,还积极拓展海外市场,与多家国际知名企业建立了长期合作关系。

ALLTHREAD公司的发展小趣事

ALLTHREAD深知品牌建设的重要性。他们注重提升品牌形象和知名度,积极参加各类行业展会和论坛,与业界同仁交流学习。同时,他们还建立了完善的客户服务体系,为客户提供及时、专业的技术支持和售后服务。这些举措有效提升了ALLTHREAD的品牌影响力和客户满意度。

Elpress AB公司的发展小趣事

随着电子技术的不断进步和市场需求的变化,Elpress AB意识到只有不断创新才能保持竞争力。因此,公司加大了对研发的投入,引进了一批先进的研发设备和人才。经过数年的努力,Elpress AB成功推出了一系列具有创新性和领先性的电气连接产品,如高压电缆接头、母线连接器等。这些产品的推出不仅丰富了公司的产品线,也进一步提升了Elpress AB在电气连接领域的地位。

Cavium Networks公司的发展小趣事

在电子行业的快速发展中,Cavium Networks 公司凭借其创新的技术和敏锐的市场洞察力,成功推出了基于 MIPS64 的单核和双核 OCTEON 处理器系列。这款处理器为网络、无线、控制和存储应用提供了高度集成化和低成本的64位计算解决方案,成为当时业界领先的面向下一代智能网络的新型处理器。OCTEON 处理器的诞生,标志着 Cavium Networks 在网络通信领域的技术实力得到了进一步提升,也为其后续的发展奠定了坚实的基础。

Datapro International Inc公司的发展小趣事

Datapro International Inc公司成立于20世纪90年代初,当时正值电子信息技术飞速发展的时期。公司的创始人是一群充满激情和创新精神的年轻工程师,他们看到了在数据存储和处理方面的巨大潜力。于是,他们决定成立Datapro International Inc公司,致力于开发高效、稳定的数据存储解决方案。

在创立初期,Datapro International Inc公司面临着重重困难,包括资金短缺、技术挑战和市场竞争等。然而,他们凭借坚定的信念和不懈的努力,成功开发出了第一款具有创新性的数据存储产品,该产品凭借其卓越的性能和稳定性迅速赢得了市场的认可。这一成功为Datapro International Inc公司的发展奠定了坚实的基础。

问答坊 | AI 解惑

C8051F+OLED+SHT21设计原理图(第二稿),欢迎大家提出宝贵意见

花了几天时间,总算把本次设计的原理图初稿完成了一下,希望关注的朋友们提点意见以助修改。 目前情况是这样的,本设计,我和空灵准备做一个更趋向于产品的小东西,所以可以做得小巧细致。目前方案如下: 1,锂电池组供电,USB通讯供电(目前锂电 ...…

查看全部问答>

在wince开发程序遇到了问题,个人判断应该是unicode 编码问题

在wince开发程序遇到了问题,个人判断应该是unicode 编码问题,比如有如下问题; CString a(\"$ABCDE\"); 个人认为a.left(6)应该是=\"$ABCDE\",结果返回值是\"$\",难道CString 不支持unicode?,left函数参数不应该是字符数量吗? 另外希望本人自己 ...…

查看全部问答>

OMAP5912 DMA数据没传到目的地址里面

首先,我用kmalloc(30*sizeof(char),GFP_DMA)分配了两段存储空间,分别作为源地址和目的地址,就是想要通过dma方式把源地址的数据传送到目的地址。 我采用的是信道0,设置了其相应寄存器, (源地址和目的地址寄存器的值是通过 virt_to_phys(mem) ...…

查看全部问答>

串口并口i2c

串口RS232? 并口是打印机口? 串口能模拟I2C时序进行通讯吗? 为什么大多数都是用打印机口模拟i2c呢?而不用串口呢…

查看全部问答>

SYRIS.DLL

谁有SYRIS.DLL动态库的说明啊?给小弟好不好?救命啊!!!!!!!…

查看全部问答>

国内电子书企业 升级还是“等死”

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 中国互联网巨头盛大推出的电子书内测价格让整个电子阅读器产业感到了前所未有的“寒意”,而友达大规模进军电子书屏幕市场使得电子书屏幕一直被一家企业垄断的格局即将被打破,加上其他企业也 ...…

查看全部问答>

大侠们,救命啊,小弟有关于dsp的问题,请大家解答

小弟最近在做dsp5509向sd卡写入速度的测试实验,可是实验结果相当的不理想,要么是写的数据不完整,要么是写入速度太慢了,用的芯片是5509.有没有哪位大侠做过相关这方面的测试,能和小弟交流下么qq:106703178email:lovejy984@163.com不胜感激啊 ...…

查看全部问答>

TI的消费电子的电源管理方案

简述: 德州仪器 (TI) 电源管理 IC有着各种解决方案。其中TPS65053x 是集成型电源管理 IC,面向那些由单节锂离子电池或锂聚合物电池供电、需要多个电源轨的应用。TPS65053X 在转换器提供了高达1A的输 图1 IC架构 主要特性: TPS65053x 是集成 ...…

查看全部问答>

电子罗盘

怎么用电子罗盘读回的数据转换为角度信息…

查看全部问答>