stm32 BKP寄存器操作操作寄存器+库函数
STM32微控制器寄存器说明

PLLXTPRE:HSE 分频器作为 PLL 输入(HSE divider for PLL entry)。由软件
置‘1’或清‘0’来分频 HSE 后作为 PLL 输入时钟。只能在关闭 PLL 时才能
写入此位。
0:HSE 不分频; 1:HSE 2 分频
PLLSRC:PLL 输入时钟源(PLL entry clock source)。由软件置‘1’或清‘0’
保 HSI HSI
留 RDY ON
位 31:26 位 25 位 24
位 23:20 位 19 位 18
位 17
位 16
位 15:8 位 7:3
保留,始终读为 0。 PLLRDY:PLL 时钟就绪标志(PLL clock ready flag)。PLL 锁定后由硬件置‘1’。 0:PLL 未锁定; 1:PLL 锁定。 PLLON:PLL 使能(PLL enable)。由软件置‘1’或清零。当进入待机和停止 模式时,该位由硬件清零。当 PLL 时钟被用作或被选择将要作为系统时钟时, 该位不能被清零。 0:PLL 关闭; 1:PLL 使能。 保留,始终读为 0。 CSSON:时钟安全系统使能(Clock security system enable)。由软件置‘1’或 清零以使能时钟监测器。 0:时钟监测器关闭; 1:如果外部 4-16MHz 振荡器就绪,时钟监测器开启。 HSEBYP:外部高速时钟旁路(External high-speed clock bypass)。在调试模式 下由软件置‘1’或清零来旁路外部晶体振荡器。只有在外部 4-16MHz 振荡器 关闭的情况下,才能写入该位。 0:外部 4-16MHz 振荡器没有旁路; 1:外部 4-16MHz 外部晶体振荡器被旁路。 HSERDY:外部高速时钟就绪标志(External high-speed clock ready flag)。由硬 件置‘1’来指示外部 4-16MHz 振荡器已经稳定。在 HSEON 位清零后,该位 需要 6 个外部 4-16MHz 振荡器周期清零。 0:外部 4-16MHz 振荡器没有就绪; 1:外部 4-16MHz 振荡器就绪。 HSEON:外部高速时钟使能(External high-speed clock enable)。由软件置‘1’ 或清零。当进入待机和停止模式时,该位由硬件清零,关闭 4-16MHz 外部振荡 器。当外部 4-16MHz 振荡器被用作或被选择将要作为系统时钟时,该位不能被 清零。 0:HSE 振荡器关闭; 1:HSE 振荡器开启。 HSICAL[7:0]:内部高速时钟校准(Internal high-speed clock calibration)。系统 启动时,这些位被自动初始化。 HSITRIM[4:0]:内部高速时钟调整(Internal high-speed clock trimming)。由软 件写入来调整内部高速时钟,它们被叠加在 HSICAL[7:0]数值上。这些位在
STM32中文参考手册

9.1 DMA简介
9.2 DMA主要特性
9.3 功能描述
STM32F10xxx参考手册
75
75 75 76 76 77 77 77
78
78 78 79 79 80 80 81 82 82
83
83 83 86 86 87 87
88
89
89
89 89
91
91 92 92 92 94
108
9.4.3 DMA通道x配置寄存器(DMA_CCRx)(x = 1…7)
108
9.4.4 DMA通道x传输数量寄存器(DMA_CNDTRx)(x = 1…7)
110
9.4.5 DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7)
110
9.4.6 DMA通道x存储器地址寄存器(DMA_CPARx)(x = 1…7)
16
1.3 可用的外设
16
2 存储器和总线构架
17
2.1 系统构架
17
2.2 存储器组织
18
2.3 存储器映像
19
2.3.1 嵌入式SRAM
20
2.3.2 位段
20
2.3.3 嵌入式闪存
21
2.4 启动配置
23
3 CRC计算单元(CRC)
25
3.1 CRC简介
25
3.2 CRC主要特性
25
3.3 CRC功能描述
STM32F10xxx参考手册
38
38 39
39
39 39 40 40 42
45
45
45 45 46
46
48 48 49 49 49 50 50 50 50 50
stm32标准库函数手册

stm32标准库函数手册STM32标准库函数是一种由ST公司推出的一套用于STM32微控制器编程的开发工具,它能够帮助开发者快速地进行芯片的开发、调试和测试。
本文将对STM32标准库函数进行详细的介绍,并提供中文手册,帮助开发者更好地掌握这个工具。
一、STM32标准库函数概述STM32标准库函数是一套由ST公司提供的软件库,包括了一系列用于STM32微控制器的常用功能函数,例如GPIO、USART、SPI、I2C等,这些函数可以用于快速实现各种应用。
同时,ST公司也提供了一些示例代码,可以方便开发者进行学习和参考。
STM32标准库函数可以与各种不同的开发环境集成,例如Keil、IAR、STM32Cube等,方便开发者进行开发。
在使用STM32标准库函数时,可以通过库函数的方式来调用硬件资源,比如设置GPIO口的状态、使用USART进行通信、配置外部中断等。
1. 系统初始化函数:这些函数包括了芯片系统时钟的初始化、中断优先级的设置、时钟输出的配置等,必须在主函数前进行调用。
2. GPIO和外部中断函数:这些函数用于对GPIO口状态的配置和读取,以及对外部中断的控制。
3. USART函数:这些函数用于对串口进行配置和读写操作。
8. DAC函数:这些函数用于对模拟量进行输出。
以下是STM32标准库函数的中文手册,包含了常用函数的介绍和使用方法。
1. 系统初始化函数1.1. RCC配置函数函数原型:void RCC_Configuration(void)函数功能:配置STM32的时钟源和时钟分频系数。
函数说明:在函数内部,首先对PLL时钟源进行配置,然后根据系统时钟的需要选择PLL时钟的分频系数,然后对AHB、APB1、APB2的分频系数进行配置。
最后,开启相应时钟使能位。
函数功能:对STM32的中断向量表进行重定位,并设置各个中断的优先级。
函数说明:中断向量表的地址是由SCB_VTOR寄存器来控制的。
stm32独立看门狗操作寄存器 库函数

stm32 独立看门狗[操作寄存器+库函数]以单片机为核心的微型计算机系统中,单片机经常会受到来自外界电磁场的干扰。
造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作。
看门狗就是一种专门用于检测单片机程序运行状态的硬件结构。
stm32也是如此。
stm32 的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障时,它也仍然有效。
这里需要注意的是独立看门狗的时钟是一个内部时钟,所以不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,看门狗的时钟对时间的要求不是很精确,所以时钟有偏差可以接受。
本例直接操作寄存器实现验证独立看门狗的复位功能,设定一个800ms的喂狗时间,在主函数中实现LED闪烁,如果设定一个1s的延时,则触发独立看门狗复位,LED常亮。
库函数实现当外部中断发生(按下PA0按键),长时间不喂狗,引发独立看门狗复位时,向外用串口输出复位提示。
直接操作寄存器使用独立看门狗,需要了解一下寄存器:键值寄存器:(IWDG_KR)低16位有效的寄存器,只写寄存器,读出值恒为0x0000. 软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。
写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器。
写入0xCCCC,启动看门狗工作。
预分频寄存器:(IWDG_PR)第三位有效寄存器,用于设置看门狗的分频系数,最低为4,最高位256.通过设置PR[2:0]:位来选择计数器时钟的预分频因子。
要改变预分频因子,IWDG_SR寄存器的PVU位必须为0。
000: 预分频因子=4100: 预分频因子=64001: 预分频因子=8101: 预分频因子=128010: 预分频因子=16110: 预分频因子=256011: 预分频因子=32111: 预分频因子=256重装载寄存器:(IWDG_RLR)低12位有效,RL[11:0]。
stm32标准库函数说明

stm32标准库函数说明
STM32标准库函数是为了方便开发者使用STM32微控制器而提供的一系列函数和库。
这些库函数提供了许多常用的功能,如GPIO操作、定时器操作、串口通信、ADC转换等。
以下是一些常见的STM32标准库函数及其说明:
GPIO 初始化函数:用于配置GPIO(General-Purpose Input/Output)的引脚模式(输入、输出、复用等)和参数(输出类型、输出速度、上拉/下拉等)。
定时器初始化函数:用于配置定时器的模式(计数器模式、PWM模式等)和参数(时钟源、自动重载值等)。
串口初始化函数:用于配置串口通信的参数(波特率、数据位、停止位、奇偶校验等)。
ADC 初始化函数:用于配置ADC(Analog-to-Digital Converter)的参数(转换模式、分辨率等)。
中断初始化函数:用于配置中断的优先级和触发方式。
延时函数:用于产生一定的延时。
睡眠函数:用于使微控制器进入低功耗模式,降低功耗。
串口发送和接收函数:用于串口通信的发送和接收数据。
ADC 读取函数:用于读取ADC转换的结果。
GPIO 操作函数:用于控制GPIO引脚的电平高低或读取引脚的电平状态。
STM32库函数汇总

STM32库函数汇总1.GPIO初始化函数 第1个参数设置GPIO端⼝,第⼆个为结构体设置模式 GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); 2.读取输⼊电平函数 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读取某个GPIO输⼊的电平,实际操作IDR寄存器,有返回值 uint8_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 读取⼀组GPIO输⼊的电平,实际操作IDR寄存,有返回值3.读取输出电平函数 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 读取某个GPIO输出的电平,实际操作ODR寄存器,有返回值 uint8_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);读取某组GPIO输出的电平,实际操作ODR寄存器,有返回值4.设置输出电平函数 GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置⾼电平实际操作,BSRR寄存器 GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 设置低电平,实际操作BRR寄存器5.使能时钟函数 RCC_APB2PeriphColckCmd();6.开启重映射时钟 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);参数1可以是串⼝,SWJ等很多种类型7.设置中断优先级分组 void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup); 在misc.c⽂件中8.设置抢占优先级和响应优先级 void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);需要设置通道,抢占优先级,响应优先级,使能通道等9.串⼝相关函数 void USART_Init();串⼝初始化:波特率,数据字长,奇偶校验,硬件流控以收发使能 void USART_Cmd(形参1,形参2);使能串⼝,形参1是串⼝位,形参2是ENABLE; void USART_ITConfig(形参1,形参2,形参3);使能中断,形参1是串⼝位,形参2是要开启中断的类型,形参3是ENABLE; void USART_SendData(形参1,形参2);发送数据到串⼝,DR,形参1是串⼝位,形参2是要发送是数据 uint16_t USART_ReceiveData(形参1);接收数据,从DR读取接收到的数据,形参1值是串⼝位 FlagStatus USART_GetFlagStatus();获取状态标志位 void USART_ClearFlag();清除状态标志位 ITStatus USART_GetITStatus(形参1,形参2)获取中断标志位;参数1值是串⼝位,参数2是要获取的状态 void USART_ClearITPendingBit();清除中断状态标志位 USART1_IRQHandler();USART中断函数,产⽣中断后进⼊,函数在核⼼⽂件中;10.外部中断函数 GPIO_EXTILineConfig(参数1,参数2);设置中断线的映射关系,参数1与参数2为要中断的IO EXTI_Init();初始化外部中断线,触发⽅式, EXTI_GetITStatus();判断中断状态是否发⽣ EXTI_ClearlTPendingBit();清除中断线上的标志位11.独⽴看门狗实验 IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);形参后⾯跟ENABLE,取消写保护 IWDG_SetPrescaler(uint8_t IWDG_Prescaler);设置预分频系数 IWDG_SetReload(uint16_t Reload);设置重装载值 IWDG_Enable();使能看门狗 IWDG_ReloadCounter();喂狗12.窗⼝看门狗 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);使能窗⼝看门狗 WWDG_SetPrescaler();设置预分频系数 WWDG_SetWindowValue();设置上窗⼝值 WWDG_EnableIT(); 开启窗⼝看门狗中断 NVIC_Init();中断初始化 WWDG_Enable();使能看门狗,设置初始计数器值 WWDG_SetCounter();喂狗 设置计数器值 WWDG_IRQHandler();编写中断服务函数13.通⽤定时器 TIM_TimeBaseInit(TIM3, &TIM_Timesture); 初始化通⽤定时器 TIM_GetITStatus(TIM3,TIM_IT_Update); 获取定时器标志位发⽣中断后标志位置1 SET TIM_ClearITPendingBit(TIM3,TIM_IT_Update);清除定时器标志位 TIM_ITConfig(TIM3, TIM_IT_Update,ENABLE);开启定时器中断 TIM_Cmd(TIM3, ENABLE); 使能通⽤定时器。
stm32hal库函数说明手册

stm32hal库函数说明手册摘要:一、STM32HAL 库概述二、STM32HAL 库常用函数说明1.GPIO 操作相关函数2.备份寄存器相关函数3.CAN 控制器相关函数4.局域网模块相关函数5.DMA 直接内存存取控制器相关函数6.外部中断事件控制器相关函数7.闪存存储器相关函数8.通用输入输出相关函数9.内部集成电路相关函数10.独立看门狗相关函数11.嵌套中断向量列表控制器相关函数12.电源/功耗控制相关函数13.复位与时钟控制器相关函数正文:一、STM32HAL 库概述STM32HAL 库是基于STM32 微控制器的硬件抽象层(HAL)库,它为开发者提供了一系列易于使用的函数,以便在STM32 上实现各种外设的操作。
STM32HAL 库大大简化了开发过程,降低了开发难度,使得开发者能够更加高效地开发出功能丰富的应用程序。
本手册主要对STM32HAL 库中的常用函数进行说明,帮助开发者快速掌握库函数的使用方法。
二、STM32HAL 库常用函数说明1.GPIO 操作相关函数GPIO(通用输入输出)是STM32 微控制器中最常用的外设之一。
以下是一些常用的GPIO 操作函数:- halgpiodeinit:GPIO 初始化函数,用于配置GPIO 的引脚模式、输出类型、速度等。
- halgpiowrite:用于设置或清除指定GPIO 引脚的状态。
- halgpioread:用于读取指定GPIO 引脚的状态。
- halgpioexticallback:中断回调函数,用于处理GPIO 外部中断事件。
2.备份寄存器相关函数备份寄存器用于在系统复位或断电时保存一些关键数据。
以下是一些常用的备份寄存器操作函数:- hal_bkp_init:备份寄存器初始化函数。
- hal_bkp_write:向备份寄存器写入数据。
- hal_bkp_read:从备份寄存器读取数据。
3.CAN 控制器相关函数CAN(控制器局域网)是一种常用于车辆和工业控制领域的通信协议。
STM32寄存器操作举例

那么很明显,只可能是 GPIOx_CRL GPIOx_CRH , GPIOx_ODR 三个寄存器会有想要 仔细阅读这几个寄存器的介绍后知道,GPIOx_CRL 是控制 PIN 0-7 的属性的,GPIOx_CRH 控制 PIN 8-15, ODR 寄存器 当然就是输出数据了,将数据送到这里就行了。
然后,这几个寄存器的地址是多少?首先看 stm32f103ve.pdf 这个是官方的 datasheet、,看第四章, Mmeory Mapping 为什么看这章?会英文都能猜到吧?,看 PORTB 的地址是 0x40010C00 - 0x40010FFF ,这个就是基地 址了。基地址 加上偏移量就能找到具体的寄存器。
typedef struct {
__IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
以结构体指针的形式传递 IO 口 GPIO_TypeDef* GPIOx
访问 CRL 寄存器则用成员的形式 GPIOx->CRL;
不需要担心这样做的效率,因为都是地址,也就是指针,最终的效率是直接寄存器操作,效率是非常高的。
看不懂库函数,归根究底就是 C 语言功底不行。不要以为写过几行 51 就懂 C 语言了,远的很呢。
} } 如果将寄存器做一个定义,则程序变成如下
#define RCC_APB2ENR *(volatile unsigned long *)0x40021018 #define GPIOB_CRL *(volatile unsigned long *)0x40010C00 #define GPIOB_ODR *(volatile unsigned long *)0x40010C0C
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
stm32 BKP 寄存器操作操作寄存器+库函数
BKP 是BACKUP 的缩写,stm32f103RCTE 的内部配备了10 个16 位宽度
的BKP 寄存器。
在主电源切断或系统产生复位时间时,BKP 寄存器仍然可以
在备用电源的支持下保持其内容。
BKP 在实际应用中可以存入重要数据,防止
被恶意查看,或用于断电等。
本例实现对BKP 寄存器的读写操作,和入侵检
测和处理。
主程序中写入寄存器后,依次打印出10 个BKP 寄存器数据,然后
触发GPIOC13 的入侵中断(输入低电平),在中断中打印出入侵事件发生后的
寄存器内容(复位为0 )。
直接操作寄存器用到的寄存器描述如下:备份数据
寄存器x(BKP_DRx) (x = 1 10):低16 位[15:0]有效,用来写入或读出备份数据。
备份控制寄存器(BKP_CR):低两位有效。
TPAL[1]:侵入检测TAMPER
引脚有效电平(TAMPER pin active level)0:侵入检测TAMPER 引脚上的高电平会清除所有数据备份寄存器(如果TPE 位为1) 1:侵入检测TAMPER 引脚
上的低电平会清除所有数据备份寄存器(如果TPE 位为1)TPE[0]:启动侵入检
测TAMPER 引脚(TAMPER pin enable)0:侵入检测TAMPER 引脚作为通用IO 口使用1:开启侵入检测引脚作为侵入检测使用备份控制/状态寄存器
(BKP_CSR):
TIF[9]:侵入中断标志(Tamper interrupt flag) 0:无侵入中断1:产生侵入中断当检测到有侵入事件且TPIE 位为1 时,此位由硬件置1。
通过向CTI 位
写1 来清除此标志位(同时也清除了中断)。
如果TPIE 位被清除,则此位也会被
清除。
TEF[8]:侵入事件标志(Tamper event flag) 0:无侵入事件1:检测到侵入事件当检测到侵入事件时此位由硬件置1。
通过向CTE 位写1 可清除此标
志位TPIE[2]:允许侵入TAMPER 引脚中断(TAMPER pin interrupt enable)0:禁止侵入检测中断1:允许侵入检测中断(BKP_CR 寄存器的TPE 位也必须被置1)注。