历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2018年12月03日 | STM32定时器及中断简单程序

2018-12-03 来源:eefocus

//----------------------------main()--------------------


//stm32f103c8t6有3个普通1个高级定时器

//每次进入中断服务程序间隔时间为

//((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒

#include

#define D13_ON GPIO_ResetBits(GPIOC,GPIO_Pin_13)

#define D13_OFF GPIO_SetBits(GPIOC,GPIO_Pin_13)


void GPIO_Config(void);

void TIM2_Config(u16 arr,u16 psc);

void NVIC_Config(void);


//主函数

int main(void)

{

    GPIO_Config();

    //((1+arr )/72M)*(1+psc )=((1+1999)/72M)*(1+35999)=1秒

    TIM2_Config(1999,35999);

    NVIC_Config();

    while(1);


}


//初始化GPIO

void GPIO_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);


    //PC13灯

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    GPIO_Init(GPIOC,&GPIO_InitStructure);

    GPIO_ResetBits(GPIOC,GPIO_Pin_13); //关闭LED

}



//初始化TIM2定时器及中断

//每次进入中断服务程序间隔时间为

//((1+arr )/72M)*(1+psc )=((1+1999)/72M)*(1+35999)=1秒

void TIM2_Config(u16 arr,u16 psc)

{

    //定时器时间是1s


    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

    //清除中断标志位

    TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//TIM_ClearFlag(TIM2,TIM_FLAG_Update);//两者作用相同


    //自动装载的周期值0-0xffff,72M/36000=2000

    TIM_TimeBaseStructure.TIM_Period = arr;

    //时钟除数预分频值0-oxffff,下面是36000分频

    TIM_TimeBaseStructure.TIM_Prescaler = psc;

    ////普通和高级才有下面两行

    //时钟分割,暂时为0,高级应用才用

    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    //计数模式,向上下,中央对齐123

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;


    TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);


    //开启中断

    TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

    //开启外设

    TIM_Cmd(TIM2,ENABLE);

}


//初始化中断向量控制器NVIC


void NVIC_Config(void)

{

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}




//--------------------stm32f10x_it.c------------------------

//中断函数中自己编写

void TIM2_IRQHandler(void)

{

    //判断TIM3更新中断是否发生

    if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)

    {

        //必须清楚标志位

    TIM_ClearITPendingBit(TIM2,TIM_IT_Update);

    //状态取反

    GPIO_WriteBit(GPIOC,GPIO_Pin_13,(BitAction)(!GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_13)));

    }


}

推荐阅读

史海拾趣

AIM公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,AIM公司始终保持着对创新的追求。通过持续的研发投入和团队努力,AIM成功开发出一系列具有竞争力的电子产品和技术解决方案。这些产品不仅满足了市场的多样化需求,还以其卓越的性能和稳定性赢得了客户的广泛认可。

GETEDZ ( HVGT)公司的发展小趣事
根据电路的需要选择合适的接触器、继电器等电器元件,确保元件的性能和质量满足要求。
GeneSiC公司的发展小趣事
在设计电路时要充分考虑电路的安全性,采取必要的保护措施,如设置过载保护、短路保护等。
FLIR公司的发展小趣事

FLIR一直将技术创新视为企业发展的核心驱动力。在过去的几十年里,公司不断推出具有革命性的红外热像仪产品。例如,1985年,FLIR研制出全球首台无需液氮制冷的高性能红外热像仪系统;1993年,公司推出了全球首台高分辨率平面(FPA)热像仪;2000年,FLIR又推出了可同时拍摄红外图像和可见光图像的红外热像仪ThermaCAM PM695。这些创新产品不仅提升了红外热像仪的性能和易用性,还推动了整个行业的技术进步和产业升级。

安美通(APPCON)公司的发展小趣事

在创业初期,安美通面临着激烈的市场竞争和技术瓶颈。然而,公司的创始团队凭借对无线通信技术的深刻理解和丰富经验,成功研发出了一系列低功耗无线远传产品,为水气电及工控行业提供了创新的解决方案。这些产品迅速获得了市场的认可,为公司的初步发展奠定了坚实的基础。

Helium公司的发展小趣事

随着Helium在物联网领域的不断突破和发展,其市场认可度逐渐提升。在2021年,Helium通过Token销售完成了1.11亿美元的融资;次年年初,又以12亿美元估值完成了2亿美元的D轮融资。这些融资的成功不仅为Helium提供了充足的资金支持,也进一步验证了其在物联网和区块链领域的商业价值和发展潜力。同时,Helium还吸引了众多明星机构和投资者的青睐,为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

关于ad9833的问题

    问ad9833能产生方波吗?看了它的控制寄存器功能表,好像不能直接产生方波啊,而且框图里面也没有比较器嘛,但看关于它的主要特点,都说可以直接产生正弦、三角、方波三种波形    恳请赐教…

查看全部问答>

单片机最小系统

实验五、模数转换 一、实验目的 1、掌握A/D转换与单片机的接口方法; 2、掌握A/D芯片TLC549的编程方法; 3、掌握数据采集程序的设计方法; 二、实验内容 利用实验开发装置上的TLC549做A/D转换器,对电位器提供的模拟电压信号进行定时中断 ...…

查看全部问答>

分享入门资料

将linux嵌入ARM的典型步骤以及相关应用工具…

查看全部问答>

关于在evc中开发ppc的GIS程序的数据图片加载的问题

搞到了一个份能在EVC下运行的 pocketpc  GIS的程序 程序都能运行 只是 随程序提供了一个map文件夹 里面放了一些 .dbf .shp和.shx的文件,应该是一些地图图片信息和相关的地理数据信息。程序运行时 需要加载上述的图片,我是在模拟器中运 ...…

查看全部问答>

tlc555频率测量,理论实际不符怎么回事?

tlc555频率测量时,如果选取C=180PF,要求输出为20KHZ左右,匹配R1,R2时该注意什么,为什么我选取R1=18K,R2=110K,按照如下公式计算: 上升时间 (T1) = 0.693 * (R1+R2) * C 下降时间(T2) = 0.693 * R2 * C 頻率 = 1.44 / ( (R1+R2+R2) * C) ...…

查看全部问答>

请问各位大侠,在WinCE中调用windows media player 时,能不能隐藏它自带的下面的一排按钮.

我在WinCE+VS2005调用Windows media player,定制它的界面,请问可以实现吗? …

查看全部问答>

ActiveSync连接 造成电脑死机 问题

我调试wince的时候使用ActiveSync进行连接 有时候调试到一般,连接突然中断,但是电脑右下脚的小图标仍然是绿色,这个时候我一拔出USB电缆,电脑就会死机 这个问题困扰了我很久 希望有人能帮我解决,谢谢!…

查看全部问答>

H3C高端路由器产品招聘软件开发人员

H3C公司2003年11月成立,最初由华为和3COM合资组建,2006年11月由3COM公司全资收购。 目前公司正在全力投入高端路由器产品的开发,急需大量软件开发、测试人员。 地点:杭州 职责: 1、负责H3C高端路由器产品软件开发工作,完成相关的设计文档、 ...…

查看全部问答>

wince设备连接PC的SQL SERVER问题,急啊!

各位好!我现在用一台PC没有与其他PC连网,只使用它来开发,用ACTIVESYNC与WINCE设备相连,在模拟器中可以与SQLSERVER相连,可是部署到设备上时,提示找不到SQLSERVER,请问谁遇到过,帮忙解决一下,多谢!…

查看全部问答>

eZ430-RF2500开发板申请

将认真填写测试报告…

查看全部问答>