历史上的今天
返回首页

历史上的今天

今天是:2024年12月21日(星期六)

2018年12月21日 | stm32的外设初始化步骤,以定时器为例。

2018-12-21 来源:eefocus

我这个程序的目的在于让定时器开启更新中断,实现定时器1S中断一次然后在中断函数中LED电平翻转一次。


1.首先先开启这个外设的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);  //开启定时器1 的时钟APB2


2.定义这个外设的初始化结构体:TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;   //定时器模式初始化结构体  定义别名为TIM_TimeBaseInitStructure


3.把这个结构体内成员参数设置:


       TIM_TimeBaseInitStructure.TIM_Period = 9999; //自动重装载值   0-9999   大概为1s翻转电平 周期为2s

TIM_TimeBaseInitStructure.TIM_Prescaler=7199;  //定时器分频  72M/7200=10000hz

TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式

TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;     //滤波器的分频因子


4.调用这个外设的初始化函数:TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);


5.允许定时器1中断开启:TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //使能指定的TIM1中断,允许更新中断


6.外设的使能开启:TIM_Cmd(TIM1, ENABLE);  //使能TIM1


7.因为这个是定时器的中断所以还需设置中断优先级。抢占以及响应优先级的设置。NVIC。每个中断都需设置一个。


//中断优先级NVIC设置

NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  //TIM1中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能

NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器


8.整个系统的设置中断分组,只需设置一次:一般在main函数中调用一次就OK。


       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级


9.编写中断服务函数:   void TIM1_UP_IRQHandler(void)   //TIM1中断


留此为证。


推荐阅读

史海拾趣

GCi Technologies公司的发展小趣事
确保输入电压在U2403B的工作电压范围内,通常为3.5V至12V。
ETC2公司的发展小趣事

为了拓展全球市场,ETC2公司制定了国际化战略。他们积极参加国际展览和交流活动,与国际同行建立了广泛的合作关系。同时,ETC2公司还针对不同国家和地区的市场特点,推出了定制化的ETC产品和服务。这些举措不仅帮助ETC2公司成功打入国际市场,也为其未来的发展奠定了坚实的基础。

动运科技(DONGWOON)公司的发展小趣事

随着技术的不断成熟和市场的逐步扩大,动运科技开始将目光投向国际市场。公司先后在深圳、上海、美国、日本和台湾等地设立了研发或分公司与办事处,形成了全球化的研发和销售网络。通过与全球知名企业的合作,动运科技的产品逐渐进入了智能手机、LED照明、物联网等多个领域,并取得了显著的业绩。

DURAKOOL公司的发展小趣事

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

Atlanta Micro公司的发展小趣事

随着公司的发展,Atlanta Micro开始积极拓展市场,与多家知名企业建立了合作关系。通过与这些企业的合作,Atlanta Micro不仅获得了更多的订单和市场份额,还从合作伙伴那里学到了先进的管理经验和技术知识。这种合作共赢的模式,为公司的持续发展提供了有力支持。

厦门法拉(faratronic)公司的发展小趣事

FMI公司始终坚持以客户为中心的发展理念,致力于为客户提供定制化的频率控制解决方案。公司拥有一支专业的研发团队和完善的生产流程,能够根据客户的具体需求进行产品设计和生产。无论是标准产品还是定制产品,FMI都能确保高质量和快速交付。这种灵活的服务模式使得FMI在客户中树立了良好的口碑,并为公司赢得了更多的商业合作机会。

问答坊 | AI 解惑

tms320vc5509的例程css3.3

tms320vc5509的例程css3.3 经过测试的…

查看全部问答>

钽电容封装及各种电阻电容封装说明

钽电容 长的话是+-0.2 ,宽是+-0.1 高 (MM) A 型的尺寸 3.2 X1.6 X1.6    俗称: A(3216) B 型的尺寸 3.5 X2.8 X1.9    俗称: B(3528) C 型的尺寸 6.0X 3.2X 2.6    俗称: C(6032) D 型的尺寸 7.3 X4.3 X2.9&nb ...…

查看全部问答>

eboot 下载 nk 出现错误

我用编译好的eboot 下载nk.bin ,老是出现Checksum failure on record , ABORT!!! ****** 不知道是什么原因? 是不是 cs8900a 不稳定造成的?我的平台S3C2440 + 64M NANDFLASH + 64M RAM wince5.0…

查看全部问答>

UNICODE_STRING问题。。。。

一段代码:        //创建设备名称         UNICODE_STRING devName;         RtlInitUnicodeString(&devName,L\"\\\\Device\\\\MyDDKDevice\");         ...…

查看全部问答>

终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!

终于可以踏上回家的行程,我兴奋啊!祝福兄弟姐妹们新年快乐!全家幸福!…

查看全部问答>

把kernel从vivi向u-boot移植的时候遇到问题了!

三星提供的kernel是for vivi 的,但俺想用u-boot来引导,结果移植上去之后,u-boot是跑起来了,但是引导kernel却出问题了 看了kernel的头部的二进制数据,发现kernel的格式竟然还和bootloader的类型有关,for vivi的kernel的头就是适合vivi,不 ...…

查看全部问答>

关于wince下MySqlParameter的一个问题

private void button1_Click(object sender, EventArgs e)         {             MySqlParameter[] paramter =            &nbs ...…

查看全部问答>

问个sdram的问题

对于sdram来说,当片选(CS#)为高时,数据线和地址线处于什么状态啊?好像不是高阻态。…

查看全部问答>

关于51单片机的地址设置

本人用的87c591,调试过程中存在这样的问题 (1)将变量地址设置到0x4000和0x4003,并且将一组数组设置到0x8000为起始地址,数组长度为245,如果设置为大模式,即xdata模式,将程序烧写进eeprom之后无法正常启动,其中寄存器的设置已经更改。 (2 ...…

查看全部问答>

Stellaris® MCU 的 Cortex 微控制器软件接口标准 (CMSIS):DSP 头文件

TI新出的资料 Stellaris® MCU 的 Cortex 微控制器软件接口标准 (CMSIS):DSP 头文件…

查看全部问答>