08 2018 档案
摘要:STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。 一、系统复位: 系统复位将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,产生一个系统复位: 1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWD
阅读全文
摘要:笔记: (1)如何禁止KEIL初始化RAM为零? 1. 在KEIL Noinit 打钩 2. <1> 另须对需要热启动保持的变量用__at关键字指定某个区域,否则还是没用 (#include "absacc.h") <2>或者__attribute__((zero_init)) 关键字 .bss段
阅读全文
摘要:一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零。如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。 在给出方法之前,先来
阅读全文
摘要:注意:如果APB1预分频系数为1,则频率不变,否则TIMxCLK的时钟输入频率是APB1时钟的2倍频,这个是通过这句函数实现:18 //设置低速AHB时钟(APB1)为HCLK的2分频(TIM2-TIM5输入TIMxCLK频率将为72MHZ/2x2=72MHZ输入)
19 RCC_PCLK1Config(RCC_HCLK_Div2);
阅读全文
摘要:STM32串口通信配置(USART1+USART2+USART3+UART4)串口中断函数也用了4种不同的收发方式实现,有定时器和非定时器,串口一也有用独立看门狗防止程序跑飞
阅读全文
摘要:stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同。
RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。
Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失,
RAM可以理解为内存,用来存储代码运行时的数据,变量等等。掉电数据丢失。
STM32将外设等都映射为地址的形式,对地址的操作就是对外设的操作。
stm32的外设地址从0x4000 0000开始,可以看到在库文件中,是通过基于0x4000 0000地址的偏移量来操作寄存器以及外设的。
一般情况下,程序文件是从 0x0800 0000 地址写入,这个是STM32开始执行的地方,0x0800 0004是STM32的中断向量表的起始地址。
在使用keil进行编写程序时,其编程地址的设置一般是这样的:
阅读全文
摘要:Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 ,简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+ RO Data + RW Data
阅读全文
摘要:窗口看门狗呵独立看门狗的区别:1、计数所用的时钟源不同:
独立看门狗由内部专门的 40Khz 低速时钟;
窗口狗使用的是 PCLK1 的时钟,使用前需要先使能时钟,而独立狗不需要使能时钟操作;
2、中断不都有:
独立看门狗没有中断,超时直接复位;
窗口狗有中断,超时可以在中断中做复位前的函数操作或者重新喂狗;
3、使用条件推荐:
独立看门狗,一般用于,避免程序跑飞或者死循环;
窗口狗避免程序不安预定逻辑执行,比如先于理想环境完成,或者后于极限时间超时;
4、计数方式不一样:
独立狗的寄存15:0有效,是12位递减的;
窗口狗的寄存器低八位有效,是6位递减的(窗口值最大0x7F);
5、超时复位时间范围不同
独立看门狗:计数器值(tr) < IWDG重装载值时,进行喂狗
窗口看门狗:0x40 < 计数器值(tr) < 窗口值(wr) 时,这期间进行喂狗
窗口狗(0x40是固定的,具体减计数什么时候到0x40由你的预分频值决定)
阅读全文

浙公网安备 33010602011771号