要想查看复位情况可以使用:
//******************************************************************************
// 函数名称: RCC_GetFlagStatus
// 功能描述: 检查指定的RCC标志设置与否.
// 输入参数: RCC_FLAG:要检查的标志.
// 这个参数可以是下面的值之一:
// - RCC_FLAG_HSIRDY: HIS振荡时钟就绪
// - RCC_FLAG_HSERDY: HSE振荡时钟就绪
// - RCC_FLAG_PLLRDY: PLL时钟就绪
// - RCC_FLAG_LSERDY: LSE振荡时钟就绪
// - RCC_FLAG_LSIRDY: LSI振荡时钟就绪
// - RCC_FLAG_PINRST: 引脚复位
// - RCC_FLAG_PORRST: POR/PDR复位
// - RCC_FLAG_SFTRST: 软件复位
// - RCC_FLAG_IWDGRST: 独立看门狗复位
// - RCC_FLAG_WWDGRST: 窗口看门狗复位
// - RCC_FLAG_LPWRRST: 低电量复位
// 输出参数: 无
// 返回参数: RCC_FLAG的新状态(SET或RESET).
FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG)来查看!
而要想软件产生一个复位如下:
在官方软件库的stm32f10x_nvic.c 文件里 直接提供了 系统复位的函数
//*******************************************************************************
* 函数名称: NVIC_GenerateSystemReset
* 功能描述: 生成一个系统复位.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void NVIC_GenerateSystemReset(void)
{
SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
}
在Cortex-M3权威指南中有一个要注意的问题:从SYSRESETREQ 被置为有效,到复位发生器执行复位命令,往往会有一个延时。在此延时期间,处理器仍然可以响应中断请求。但我们的本意往往是要让此次执行到此为止,不要再做任何其它事情了。所以,最好在发出复位请求前,先把FAULTMASK 置位。stm32f10x_nvic.c 文件里也直接提供了该函数
/*******************************************************************************
* 函数名称: NVIC_SETFAULTMASK
* 功能描述: 使能FAULTMASK优先级:把执行的优先级提升为-1.
* 输入参数: 无
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void NVIC_SETFAULTMASK(void)
{
__SETFAULTMASK();
}
所以要系统复位 只要 调用这个函数就行了
void SystemReset(void )
{
NVIC_SETFAULTMASK();
NVIC_GenerateSystemReset();
}
关键字:STM32 复位类型 软件复位
引用地址:
STM32 关于复位类型的判断及软件复位
推荐阅读最新更新时间:2024-03-16 16:03
教你如何修改STM32系统时钟
今天,公司丢了一个新的 STM32 控制板让我调试,一想还是很好调试。结果傻眼了,晶振是12MHZ啊。网上找了一些资料,现在整理一下,供大家参考使用。 具体步骤如下: 第一步,全局搜索HSE_VALUE #define HSE_VALUE ((uint32_t)8000000) /*! Value of the External oscillator in Hz */ 修改为: #define HSE_VALUE ((uint32_t)12000000) /*! Value of the External oscillator in Hz */ 第二步,打开system_stm32f10x.c,修改PLL参数,将 /* P
[单片机]
STM32串口发送十六进制的数组
通过串口发送十六进制的数组的方法有很多种,这里我介绍一种最简单也最使用的一种方法。 我这里使用的板子是STM32F103RCT6,使用串口2,usart2.c的代码如下: #include delay.h #include usart2.h #include stdarg.h #include stdio.h #include string.h #include timer.h //串口接受缓存区 u8 USART2_RX_BUF ; //接受数据缓冲,最大为USART2_MAX_RECV_LEN个字节 u8 USART2_TX_BUF ; //发送数据缓冲,最大为USART2
[单片机]
stm32-4路pwm优化
/********************************************************* TIM3输出4路pwm,单独控制占空比 **********************************************************/ #ifndef _PWM_ #define _PWM_ #include stm32f10x.h #define CLOCK 72000 void set_pwm1(u32 arr,u16 psc); void set_pwm2(u32 arr,u16 psc); void set_pwm3(u32 arr,u16 psc);
[单片机]
如何用flash保存stm32 html的参数
STM32F407由一个Cortex-M4内核,片上flash,片上sram,以及片上外设(uart,I2C,SPI等)组成。 内核通过I,S,D三条数据总线,与总线矩阵相连,对片上flash,片上sram,以及片上外设等进行操作,内核通过I总线获取指令,内核通过D总线进行立即数加载和调试访问,内核通过S总线访问SRAM中的数据,也可以通过该总线获得指令(效率低于I总线)。 并且I总线可以向片内flash,SARM,FSMC取址,而且,STM32F407有三种自举方式,也就是当BOOT1为任意和BOOT0为0时,程序从flash中0x0800 0000 开始自举启动,程序此时开始启动。
[单片机]
stm32 定时器 通用定时器
STM32F10xxx 2个基本定时器(TIM6、TIM7) 4个通用定时器(TIM2、 TIM3、 TIM4和TIM5) 2个高级定时器(TIM1、TIM8) 每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作 TIMx主要功能 16位向上、向下、向上/向下自动装载计数器 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的任意 数值 4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 使用外部信号控制定时器和定时器互连的同步电路 如下事件发生时产生中断/DMA: ─ 更新:计数器
[单片机]
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中
STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 u8 Usart2_buf ; unsigned int usart2_lent; void main(void) { char buf_password = 000000 ;//6位密码 memset((char *) &buf_password, 0, sizeof(buf_password)); strncpy(buf_password, Usart2_buf + 9, 6);//从外键获取的信息保存到Usart2_buf中,其中从第10-15位保存的是密码 if(save_password()==1) { soundBe
[单片机]
意法半导体为 STM32 开发人员提供免费的专业音频软件
为协助产品研发人员在便携和家庭音频产品中开发STM32微控制器的全部潜能,意法半导体(纽约证券交易所代码:STM)与知名音频软件供应商Spirit DSP携手,为客户提供免费的专业音频软件,其功能和性能较普遍的开放原始码音频解决方案更高。 STM32 Spirit音频引擎拥有许多优势,包括高品质编解码功能、丰富的音频系统功能、低内存使用量、长效电池使用寿命以及完整的技术支持。这些优势不但使专业开发的随插即用解决方案从众多的开放原始码软件中脱颖而出。同时,STM32 Spirit音频引擎与所有开放原始码软件相同,完全免费无需额外成本。 此外,针对意法半导体先进STM32微控制器架构全面优化的STM32 S
[单片机]
STM32的一些基本知识总结
Cortex-M3缩略语 AMBA:先进单片机总线架构 ADK:AMBA设计套件 AHB:先进高性能总线 AHB-AP:AHB访问端口 APB:先进外设总线 ARM ARM:ARM架构参考手册 ASIC:行业领域专用集成电路 ATB :先进跟踪总线 BE8:字节不变式大端模式 CPI:每条指令的周期数 DAP:调试访问端口 DSP:数字信号处理(器) DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元 FPB:闪存地址重载及断点 FSR:fault状态寄存器 HTM:Core Sight AHB跟踪宏单元 ICE:在线仿真器 IDE:集成开发环境 IRQ:中断请求(通常是外中断请求) ISA:指令系统架构 ISR:中断服务例程 I
[单片机]