STM32F103RCT6上电复位

devtools/2024/10/21 10:09:25/

STM32F103RCT6 在上电时会经历一个上电复位(Power-On Reset, POR)过程。这是微控制器通电后的一种内置复位机制,用于确保所有的内部寄存器和电路都处于一个已知的安全状态。上电复位通常发生在以下几种情况:

  1. 首次通电:当微控制器第一次通电时。
  2. 电压下降:当电源电压下降到低于某个阈值时,为了防止数据丢失或损坏,微控制器会执行上电复位。
  3. 手动复位:通过按下外部复位按钮或通过外部复位信号触发。

上电复位的过程:

  1. 所有寄存器被复位:所有寄存器回到它们的默认状态。
  2. RAM和Flash数据保留:虽然寄存器被复位,但是SRAM和Flash中的数据一般会被保留下来,除非进行了擦除操作。
  3. 时钟复位:所有时钟被停止,需要重新配置时钟。
  4. 外设复位:所有外设被复位,需要重新配置外设。

如何确认STM32F103RCT6已经经历了上电复位:

  • 检查POR标志:可以检查微控制器的状态标志,例如 RCC->CSR 寄存器中的 PORS 位(Power-On Reset Status bit)。这个标志会在发生上电复位后被设置。
  • 检查外设状态:检查外设寄存器是否已经被复位到了默认值。

如何处理上电复位后的初始化:

  1. 配置时钟系统:首先需要配置系统时钟,例如 HSE、HSE、PLL 等。
  2. 配置GPIO端口:根据需要配置GPIO端口的方向、速度等属性。
  3. 配置外设:配置所需的外设,如定时器、串行通信接口等。
  4. 启动主程序:完成所有初始化后,开始执行主程序。

示例代码:

以下是一个简单的示例代码,展示了如何配置STM32F103RCT6的时钟系统和GPIO端口:

#include "stm32f10x.h" // Device headerint main(void)
{// Enable the clock for GPIOARCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// Configure GPIO pin PA0 as an outputGPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // Select PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // Push-Pull Output ModeGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // Set the speed to 50 MHzGPIO_Init(GPIOA, &GPIO_InitStructure);while (1){// Toggle PA0 every secondGPIO_ToggleBits(GPIOA, GPIO_Pin_0);delay(1000); // Delay function (not shown here)}
}

注意事项:

  • 时钟配置:确保正确配置时钟系统,否则外设可能无法正常工作。
  • GPIO配置:确保GPIO端口按照应用需求正确配置。
  • 延迟函数:示例代码中的 delay() 函数需要自己实现,可以使用定时器或其他方式来实现延时。

总结

  • 上电复位是STM32F103RCT6在通电或电源电压下降时自动执行的复位过程。
  • 在上电复位后,需要重新配置微控制器的时钟系统和外设。
  • 通过检查状态标志和外设状态可以确认是否经历了上电复位。

http://www.ppmy.cn/devtools/103984.html

相关文章

数据结构涵盖了哪些内容?

数据结构是计算机科学中研究数据存储和组织方式以及它们之间关系的学科。它不仅仅关注数据在计算机中的存储方式,还关注数据的操作(如增、删、改、查)效率以及这些操作如何影响数据在计算机中的存储结构。数据结构的内容广泛,但主…

尚硅谷大数据技术-Kafka视频教程-笔记01【Kafka 入门】

视频地址:【尚硅谷】Kafka3.x教程(从入门到调优,深入全面)_哔哩哔哩_bilibili 尚硅谷大数据技术-Kafka视频教程-笔记01【Kafka 入门】尚硅谷大数据技术-Kafka视频教程-笔记02【Kafka 外部系统集成】尚硅谷大数据技术-Kafka视频教程…

生产环境中变态开启devtools(强制)

写到最前面 首先,你已经下载了google的插件【vue devtools】,不知道怎么下载,留言博主 如果你想看的项目中的vuetools插件打开是这样的 Vue.js is detected on this page. Devtools inspection is not available because it’s in product…

mysql实用系列:coalesce函数的使用

COALESCE 是 SQL 语言中的一个函数,它的作用是返回第一个非空表达式的结果。如果所有的表达式都是空值(NULL),则 COALESCE 函数返回 NULL。这个函数常用于处理可能存在 NULL 值的数据列,确保查询结果更加稳定和可预测 …

Android 中ebpf 的集成和调试

1. BPF 简介 BPF,是Berkeley Packet Filter的简称,最初构想提出于 1992 年。是一种网络分流器和数据包过滤器,允许早操作系统级别捕获和过滤计算机网络数据包。它为数据链路层提供了一个原始接口,允许发送和接收原始链路层数据包…

python中代码缩进

是指每行语句开始前的空白区域 用来表示python程序之间的包含和层次关系 类定义、函数定义、流程控制语句以及异常处理语句等行尾的冒号和下一行的缩进表示一个代码块的开始、而缩进结束,则表示一个代码块的结束 通常情况下采用4个空格作为一个缩进量 例如&#…

谷粒商城实战笔记-269~271-商城业务-订单服务-bug修改

文章目录 一,269-商城业务-订单服务-bug修改二,270-商城业务-订单服务-订单确认页渲染三,271-商城业务-订单服务-订单确认页库存查询四,272-商城业务-订单服务-订单确认页模拟运费效果 一,269-商城业务-订单服务-bug修…

系统编程-消息队列

消息队列 目录 消息队列 引入 一、消息队列的特点 二、使用指令查看消息队列 三、使用消息队列进行通信的步骤 1、获取键值 2、创建或获取消息队列 id 3、使用消息队列进行数据的传输 4、msgrcv -- 从消息队列中读取数据 5、消息队列的多种操作函数 引入 -- 进程间…