STM32学习手记5 BKP后备寄存器、RTC和中断

STM32的后备寄存器:

STM32共有42个16位后备寄存器,可以用来存储84个字节的用户数据。而所谓的后备寄存器,并不是真正的EEPROM。当VDD电源被切断,VBAT仍然保持供电,后备寄存器的内容才不会丢失。

​在需要使用BKP寄存器时,需要先使能

STM32F103的简单RTC功能

RTC的核心功能是一个32位的计数器和一个20位的分频器。通常的使用方法,是选择RTC时钟源,并通过设置分频器​将时钟源的频率进行分频后达到1HZ的频率。每次时钟源跳动分频器预设值次,核心计数器就加1。32位计数器可以记录4294967296秒,大约136年。

一般情况下,使用LSE上安装32678HZ的外部晶振作为RTC输入时钟源。由于晶振存在温飘等不稳定因素,一般RTC时钟的精度都不高。

虽然通过APB1接口访问RTC,但实际上RTC的内核是独立于APB1接口运行的。所以要读取RTC的主计数器RTC_CNT和分频寄存器RTC_DIV的只的时候,必须等到TRC_CRL寄存器中的RSF位被硬件置位。这一位由硬件控制,置位表示目前CNT和DIV的内容已经与真实内容同步。同样的,如果要对RTC进行设置等操作,则需要等待RTOFF标志位(RTC操作关闭标志)​置位,表示上一个操作已经完成,才可以进行下一次设置。

由于RTC的设置寄存器属于后备寄存器,每次进行配置之前,都必须设置 BKP外设时钟以及激活后备寄存器设置功能

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); // 设置PWR和BKP的时钟

PWR_BackupAccessCmd(ENABLE); // 使能BKP寄存器的设置

RTC只有一个中断函数,对应两个中断源:秒中断和闹钟中断。秒中断在主计数器加1的时候发生;闹钟中断则​对应一个32位寄存,当主计数器中的值和闹钟寄存器一样时,产生闹钟中断。

在使用​闹钟或者秒中断之前,需要先在RTC中使能响应的中断发生功能,并在NVIC中使能RTC中断

​RTC_ITConfig(RTC_IT_SEC | RTC_IT_ALR, ENABLE); // 使能秒中断和ALARM中断

​NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; //NVIC中使能RTC中断

只要有后备电池存在,后备寄存器会一直保持不变。

STM32的中断系统:

在M3内核中,所有能打断正常系统函数运行的功能都称作“异常”。0-15号异常来自于M3内核内部,暂时不讨论。另外240个,由外部输入的异常则成为中断。内部异常对于系统内核运行来说,是同步的,而外部中断则是异步的。

由于单个外设可能产生多种中断,如果每个中断占用一个编号,会导致240个编号不够用。在STM32中,只使用了84个中断通道(16个内部异常+68个外部中断),这种多个中断源使用一个中断号的情况更严重。在接到中断的时候,需要通过读寄存器来了解到底是哪一个具体的源产生了中断。

填写图片摘要(选填)

中断的分级:

在系统中​,拥有最高优先级的是三种内核异常:复位、NMI和硬件fault,是不能通过编程改变的。

可编程的中断​,响应的顺序则可以通过NVIC系统进行配置。STM32的NVIC系统将中断的优先级分为抢占优先级和响应优先级。

​抢占优先级较高的中断,可以打断当前正在进行的抢占优先级较低的中断,进行中断嵌套。响应优先级较高的中断,可以在多个相同抢占优先级中断同时需要响应的时候,有限进行响应。​被设置的响应级别数字越小,优先级越高!

填写图片摘要(选填)

​首先设定优先级分组方式,比如采用第二组优先级分组,即使2/2位的优先级

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置优先级分组

接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级: 

// 使能EXTI0中断 

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel; 

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1 

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0 

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

NVIC_Init(&NVIC_InitStructure); 

具体参照 http://www.eefocus.com/pj4485/blog/13-06/295126_8a0b5.html

猜你喜欢

转载自blog.csdn.net/laoponline/article/details/111050097