精华内容
下载资源
问答
  • stm32复位电路设计原理
    万次阅读 多人点赞
    2018-09-22 11:54:29

    首先需要注意RST引脚上边是否画了一条横线,如果画了一条横线,则是RST引脚接收到低电平复位,如果无横线,则RST引脚接收到高电平复位。

    以下摘自 http://mouser.eetrend.com/content/2018/100011514.html

    复位电路的工作原理

    在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。

    开机的时候为什么为复位

    在电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

    按键按下的时候为什么会复位

    在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

    总结:

    1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。

    2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

     

    “”

    更多相关内容
  • STM32 复位电路设计

    千次阅读 2022-04-26 21:16:38
    在此之前我是个只会抄写原理图的工程师,每当遇到一个问题时,确需要解决很久,最根本的原因在于不明白其中的原理,这次补充一下单片机复位电路设计 1. 为什么要设计复位电路? 在做一件事情之前需要明白为什么要...

    在此之前我是个只会抄写原理图的工程师,每当遇到一个问题时,确需要解决很久,最根本的原因在于不明白其中的原理,这次补充一下单片机复位电路设计

    1. 为什么要设计复位电路?

    在做一件事情之前需要明白为什么要这么做,我们为什么要设计复位电路呢?一下几点原因是我总结出来的。

    • 当你的电脑出现卡死等问题的时候,大部分人会直接重启(攻城狮除外),目前市面上很多电子产品都会用复位按键,所以一个成熟的产品是大概率需要复位的
    • 在产品调试阶段,尤其在调试软件的时候需要经常复位软件, 有些工程师也会采用软件复位, 不过软件复位没有硬件复位来的快捷。

    以上两个理由足以说明为什么要复位电路了。

    2. 复位时是具体做了哪些工作?

    主要做的就是初始化每个寄存器,包括最重要的 PC 指针,不包括 RAM,然后单片机从复位地址开始执行程序。(欢迎补充)

    3. 复位的前提需要什么?

    3.1 复位信号

    每种方式对应一种复位信号,比如硬件复位需要低电平,软件复位需要设置寄存器,看门狗复位需要配置寄存器,下面我们着重讲硬件复位,由STM32的数据手册可知,复位管脚低电平电压需要小于0.8V,输入脉冲时间为100ns。所以只需要在NRST管脚给小于0.8V的电压,持续时间为100ns就可以实现复位了。
    在这里插入图片描述

    3.2 CPU正常工作

    为什么CPU需要正常工作?因为复位操作需要设计PC寄存器, 这涉及到软件层面, 故所以需要CPU能正常功能才能进行复位

    3.3 晶振正常工作

    为什么晶振需要正常工作?由3.2可知CPU需要正常功能, 那么CPU是靠什么正常工作的呢?显而易见CPU是靠晶振提供时钟频率的,所以晶振需要正常工作

    3.4 电源正常工作

    试想一下,如果电源不稳定,电压波动范围很大, 是不是会影响CPU的运行?的确是这样子的,电源一定要稳定。

    3.5 复位信号是不是只要满足低电平时间大于100ns就可以呢?

    100ns时间是很短的,很容易达到, 但是有没有试想一下如果只给100nS,那么此时是由复位信号了, 但是电源还没到VCC,晶振还没起振? 这一定存在的,因为上电时,Vcc 的上升时间约为 10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为 10MHz,起振时间为 1ms;晶振频率为 1MHz,起振时间则为 10ms。目前STM32单片机大部分采用8M高速晶振,那么主要问题出在电源的上升时间,为了保证系统的稳定性, 这里我们去2倍吧,20ms的低电平时间。

    4. 怎么设计复位电路?

    目前市面上的复位电路大部分采用RC复位,这种方式成本低廉,稳定性好,被用于大部分的设计中。

    4.1 RC充电原理

    4.1.1 什么是电容充电?

    电荷在电容器极板上聚集的过程叫做充电过程,这个过程不是瞬间完成的,而是需要一段时间,时间取决于电路的组成元件。

    4.1.2 基本RC充电电路

    在这里插入图片描述
    如图1所示,开关闭合的瞬间,电子在电源的作用下从位于电容顶部的极板沿电路移动并聚集到位于底部的极板上,导致在顶部极板聚集了正电荷,在底部极板聚集了负电荷。
    开始时,电子的转移非常迅速,随后由于两个极板间产生的电压逐渐接近于所加的电源电压,移动速度减慢。最终,当电容两个极板间的电压达到所加的电源电压时,电子移动过程停止,这时候,极板上的净电荷是:
    在这里插入图片描述
    电荷在极板上聚集的过程叫做瞬态过程 —— 电压或者电流从一个稳态到另一个稳态的过程。电压-时间变化过程曲线如图2所示:
    在这里插入图片描述
    注意:vc 和 Vc 是有区别的。vc是变量,Vc是常量。

    从图2中可以看出, t=0s时,电容器两端电压是 0V;一开始,电荷聚集的速度很快,导致电压急剧增加。随着时间的推移,电荷聚集的速度减慢,导致电压变化的速率也减缓,即电压继续增加,但速率变慢。最终,由于极板间电压接近外加电压,充电速率极低,直到极板间电压等于外加电压 —— 瞬态过程结束。

    可以用数学中的指数函数来描述上述过程,图2的过程曲线可以用
    在这里插入图片描述
    式中:

    • vc用小写斜体来表示,因为它是随时间变化的,不是常数;
    • 指数写为时间(t)除以常数涛,涛称作时间常数,定义为:
      涛=RC (S)
    • t=0S 时, vc=0;
    • t=涛S 时, vc=0.632E;
    • t=2涛S 时, vc=0.865E;
    • t=3涛S 时, vc=0.993E;

    可以得出:在直流电源作用的电路中,电容器两端的电压在经过5个时间常数后基本等于外部电压,即充电过程基本结束。
    或者:一个电容的瞬态或充电过程在经历5个时间常数后便基本结束。

    电流-时间变化过程如图3所示:
    在这里插入图片描述
    下图为涛=1,E=1 的充电(上升曲线)和放电(下降曲线)的电压时序图
    在这里插入图片描述

    4.1.3 关于时间常数涛

    时间常数涛不可能为0,因为在容性电路中总会存在一定的电阻。在有些情况下,涛的值可能很小,但是无论多小,5倍涛的值一定存在,不可能为0。因此可以得出:电容两端的电压不能瞬间改变。

    更进一步的说,电容的大小反映了电容电压变化的程度。电容越大,时间常数越大,电容两端的电压达到所加电压的时间就会越长。这在避雷针和浪涌抑制器的设计上非常有帮助,避雷针和浪涌抑制器是用来保护电路以免电路受到不可预知的过电压的损害。

    4.2 STM32单片机复位电路设计

    4.2.1 复位原理

    我们可以根据上述的RC充电原理,采用一个电阻和一个电容串联,中间段连接至STM32的复位管脚。为了保证复位的时间很短,由上述曲线可知,当在一个时间常数时,电压为电源电压的0.632倍,若VCC=3.3V,那么一个时间常数时电压为:3.3-3.30.632=1.21V >0.8V 不满足我们的需求, 2个时间常数的时候电压为3.3(1-0.86)=0.462 < 0.8V. 满足需求,时间为100ms,2RC=20ms, RC=10mS, 可选择R=10K,C=10uF。

    4.2.2 原理图设计

    按照我们上面说的理论,其实有两种方式,如下图所示,那么哪种才是我们想要的呢?下图两者的区别在于电容的电阻的位置不同, 由于电容两端的电压不能突变,当刚上电时,A电路为低电平,此时单片机复位,直到保持到1个时间常数后,NRST为高电平,而B电路,一上电为高电平,1个时间常数后NRST管脚为低电平, 并且一直保持低电平, 这样会导致MCU一直复位,所以正确的电路应该A电路,而B电路适合用于高电平复位的MCU。
    在这里插入图片描述
    上图为上电自动复位电路, 如果需要加手动复位的话也和简单,只需要在AB电路的电容两端并联一个按键,当按键按下时,A图中的NRST为低电平,MCU复位,B电路为高电平。

    参考资料

    展开全文
  • TM32F103C8T6的最小系统版,板载MicroUSB接口、复位按键、SWD。全GPIO引出
  • STM32开发笔记57: 复位电路设计

    万次阅读 2018-12-09 12:48:38
    本篇文章针对所有的STM32芯片,网上有不少文章叙述了有关STM32复位电路的相关内容,也有很多推荐电路,例如ALIENTEK给出的复位电路,如下图所示。 不过还有一些推荐电路,不需加上拉电阻,或者电容也不加,那到底...

    本篇文章针对所有的STM32芯片,网上有不少文章叙述了有关STM32复位电路的相关内容,也有很多推荐电路,例如ALIENTEK给出的复位电路,如下图所示。

    不过还有一些推荐电路,不需加上拉电阻,或者电容也不加,那到底应该如何设计呢?还需看一下官方手册的推荐电路,如下图所示。

    可看到,复位电路具有内部上拉电阻,外部只需接0.1uf电容即可,不需在外部电路上拉10K电阻,上拉后只会使上拉电阻变小,减小复位时间,或会导致复位不正常。内部上拉电阻阻值和其它参数如下表所

    展开全文
  • 设计是基于STM32F030C8微控制器的最小系统。 STM32F030C8是基于ST推出的Contex-M0内核的单片机,最大频率为48MHz。它具有64KB的Flash和8KB的SRAM。在经济性和性能之间达到很好的平衡。 核心板的超小尺寸使其可以...
  • STM32最小系统硬件组成详解 0组成: 电源 复位 时钟 调试接口 启动 1、电源 : 一般3.3V LDO供电 加多个0.01uf去耦电容 2、复位:有三种复位方式:上电复位、手动复位、程序自动复位 通常低电平复位:(51单片机高电平...
  • 本文从复位启动选择、时钟、电源等方面介绍了一些应该注意的问题。
  • 闲暇时间,绘制的STM8开发学习板,自己已成功使用。...电路主要由电源电路模块、触摸电路模块、STM8S105K4最小系统电路、复位电路、外扩接口、基于W25Q64设计的FLASH存储电路等构成。 原理图截图: PCB截图:
  • STM32F407ZGT6GK原理
  • 设计是基于STM32 BLDC直流无刷电机控制器设计,并附上原理图和源码等,供网友参考学习。源代码是基于免费开源CoOS(UCOS类似)操作系统上写的,在学习无刷电机的控制同时还能学习到操作系统的知识。同时提供用Matlab...
  • STM32L011D4P6仅仅14个引脚,本评估板有2颗用户LED,1个用户按键,1个复位按键,引出全部IO,板载TI开关电源芯片tps563200,输入电压范围4.5V——17V,设计输出电压5V,最大输出电流3A,另外板载TI电平转换芯片TXB...
  • 单片机最小系统一般有晶振电路、电源电路、复位电路以及调试电路组成。原理图以STM32F103C8T6为例,介绍最小电路的设计
  • STM32开发板电路PCB 3D截图: 本STM32开发板功能及特点: 1.带有usb一键下载电路(PL2303HX) 2.直接USB供电。 3.双USB口,一个串口,一个为USB口 4 .带有纽扣电池座,并带有选择排针,如无需要可选择3.3V 5.BOOT0、采用...
  • 绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据 文章目录绘制STM32最小系统电路原理图、STM32F103读取SD...用Altium Designer绘制一个stm32最小系统的电路原理图,并在此基础上完成STM32+SD卡 的系统原理设计

    绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据

    1 AltiumDesigner 软件配置

    1. 安装连接:百度网盘
      提取码:fnr9
    2. 解压——安装包——双击打开AltiumDesigner18Setup.exe——

    利用AD软件,完成以下任务
    用Altium Designer绘制一个stm32最小系统的电路原理图,并在此基础上完成STM32+SD卡 的系统原理图设计。

    2 AltiumDesigner 绘制STM32最小系统原理图

    2.1 建立工程文件

    1. File——New——Project——PCB Project
      (记得将工程保存在文件夹下。)
      在这里插入图片描述
    2. File——New——Project——PCB Project——Schematic
    3. 导入元件库:右上角“库”——Libraries——可用库——右下角“添加库”——选指定的元件库——打开。
      在这里插入图片描述

    2.2 基本绘制方法

    1. 选择芯片,将其拖入界面(STM32C8T6)。要放置其余原件也是类似方式。
      在这里插入图片描述
    2. 延长引脚线,设置标签。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    3. 点击原件,按空格键可以旋转 90°。

    2.3 绘制其余模块

    系统供电稳压
    在这里插入图片描述调试JTAG、SW模块
    在这里插入图片描述
    复位模块
    在这里插入图片描述
    I/O接口
    在这里插入图片描述
    扩展供电接口
    在这里插入图片描述
    STM32USB
    在这里插入图片描述

    数据存储E2
    在这里插入图片描述

    OLED
    在这里插入图片描述
    STM32
    在这里插入图片描述

    3 AltiumDesigner 绘制STM32+SD卡原理图

    如图示STM32F103CT6 和 SD 卡的原理图。
    在这里插入图片描述

    4 SD卡概述

    4.1 SD 卡简介

    SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小、数据传输速度快、可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机、平板电脑和多媒体播放器等。

    4.2 SD 卡模块结构

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

    各个部分的功能:

    一共有6个接口,分别是GND,VCC,CS,SCK,MOSI,MISO。VCC是供电,GND是接地。其他4根是SPI通讯时用的,CS是片选,SCK是时钟信号,MOSI为主输出从输入,MISO为主输入从输出。

    4.3 SD 卡的寄存器

    名称宽度描述
    CID128卡标识寄存器
    RCA16相对卡地址寄存器:本地系统中卡的地址,动态变化,在卡的初始化时确定。(SPI模式中没有)
    CSD128卡描述数据寄存器:卡操作条件相关的信息数据
    SCR64SD配置寄存器:SD卡特定信息数据
    OCR32操作条件寄存器

    4.4 SD 卡操作

    • SD卡初始化过程(知道 SD 卡的类型V1、 V2、 V2HC 或者 MMC):

      初始化与 SD 卡连接的硬件条件(MCU 的 SPI 配置, IO 口配置);
      上电延时(>74 个 CLK)(因为 SD 卡内部有个供电电压上升时间,大概为 64 个 CLK,剩下的 10 个 CLK 用于 SD 卡同步,之后才能开始 CMD0 的操作);
      复位卡(CMD0),进入 IDLE 状态;
      发送 CMD8,检查是否支持 2.0 协议;
      根据不同协议检查 SD 卡(命令包括: CMD55、 CMD41、 CMD58 和 CMD1 等);
      取消片选,发多 8 个 CLK(提供 SD 卡额外的时钟,完成某些操作),结束初始化;
      
    • SD卡读取数据(CMD17):

      发送 CMD17;
      接收卡响应 R1;
      接收数据起始令牌 0XFE;
      接收数据;
      接收 2 个字节的 CRC,如果不使用 CRC,这两个字节在读取后可以丢掉。
      禁止片选之后,发多 8 个 CLK;
      
    • SD卡写数据(CMD24):

       发送 CMD24;
       接收卡响应 R1;
       发送写数据起始令牌 0XFE;
       发送数据;
       发送 2 字节的伪 CRC;
       禁止片选之后,发多 8 个 CLK;
      

    5 SD卡数据读取实作

    用STM32F103完成对SD卡的数据读取(fat文件模式)。

    5.1 源代码

    工程文件连接:
    百度网盘
    提取码:e63q

    1. main函数中修改文件名以及输出内容
      在这里插入图片描述

      int main(void)
      {
        /* USER CODE BEGIN 1 */
      
        /* USER CODE END 1 */
        
      
        /* MCU Configuration--------------------------------------------------------*/
      
        /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
        HAL_Init();
      
        /* USER CODE BEGIN Init */
      
        /* USER CODE END Init */
      
        /* Configure the system clock */
        SystemClock_Config();
      
        /* USER CODE BEGIN SysInit */
      
        /* USER CODE END SysInit */
      
        /* Initialize all configured peripherals */
        MX_GPIO_Init();
        MX_SPI1_Init();
        MX_FATFS_Init();
        MX_USART1_UART_Init();
        /* USER CODE BEGIN 2 */
      	
      	HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); 	//enable uart	
      
      	printf(" mian \r\n");
      
      	Get_SDCard_Capacity();	//得到使用内存并选择格式化
      
      
      
        /* USER CODE END 2 */
      
        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1)
        {
      		
      		
      		
      		WritetoSD(WriteBuffer,sizeof(WriteBuffer));		
      
      		
      		
      		HAL_Delay(500);
      		WriteBuffer[0] = WriteBuffer[0] +0;
      		WriteBuffer[1] = WriteBuffer[1] +1;
      		write_cnt ++;
      		
      		while(write_cnt > 10)
      		{	
      			printf(" while \r\n");
      			HAL_Delay(500);
      		}		
      		
      
      		
          /* USER CODE END WHILE */
      
          /* USER CODE BEGIN 3 */
        }
        /* USER CODE END 3 */
      }
      
    2. 其余函数:

      // SD卡初始化函数  
       void Get_SDCard_Capacity(void)  
       // SD卡写入函数
       void WritetoSD(BYTE write_buff[],uint8_t bufSize)  
      
      //SD 卡初始化函数
      void Get_SDCard_Capacity(void)   
      {
      	FRESULT result;
      	FATFS FS;
      	FATFS *fs;
      	DWORD fre_clust,AvailableSize,UsedSize;  
      	uint16_t TotalSpace;
      	uint8_t res;
      	
      	res = SD_init();		//SD卡初始化
      	if(res == 1)
      	{
      		printf("SD卡初始化失败! \r\n");		
      	}
      	else
      	{
      		printf("SD卡初始化成功! \r\n");		
      	}
      	
      	/* 挂载 */
      	res=f_mount(&FS,"0:",1);		//挂载
      	if (res != FR_OK)
      	{
      		printf("FileSystem Mounted Failed (%d)\r\n", result);
      	}
      
      	res = f_getfree("0:", &fre_clust, &fs);  /* 根目录 */
      	if ( res == FR_OK ) 
      	{
      		TotalSpace=(uint16_t)(((fs->n_fatent - 2) * fs->csize ) / 2 /1024);
      		AvailableSize=(uint16_t)((fre_clust * fs->csize) / 2 /1024);
      		UsedSize=TotalSpace-AvailableSize;              
      		/* Print free space in unit of MB (assuming 512 bytes/sector) */
      		printf("\r\n%d MB total drive space.\r\n""%d MB available.\r\n""%d MB  used.\r\n",TotalSpace, AvailableSize,UsedSize);
      	}
      	else 
      	{
      		printf("Get SDCard Capacity Failed (%d)\r\n", result);
      	}		
      } 
      
      //SD卡写入函数
      void WritetoSD(BYTE write_buff[],uint8_t bufSize)   
      {
      	FATFS fs;
      	FIL file;
      	uint8_t res=0;
      	UINT Bw;	
      	
      	res = SD_init();		//SD卡初始化
      	
      	if(res == 1)
      	{
      		printf("SD卡初始化失败! \r\n");		
      	}
      	else
      	{
      		printf("SD卡初始化成功! \r\n");		
      	}
      	
      	res=f_mount(&fs,"0:",1);		//挂载
      	
      //	if(test_sd == 0)		//用于测试格式化
      	if(res == FR_NO_FILESYSTEM)		//没有文件系统,格式化
      	{
      //		test_sd =1;				//用于测试格式化
      		printf("没有文件系统! \r\n");		
      		res = f_mkfs("", 0, 0);		//格式化sd卡
      		if(res == FR_OK)
      		{
      			printf("格式化成功! \r\n");		
      			res = f_mount(NULL,"0:",1); 		//格式化后先取消挂载
      			res = f_mount(&fs,"0:",1);			//重新挂载	
      			if(res == FR_OK)
      			{
      				printf("SD卡已经成功挂载,可以进进行文件写入测试!\r\n");
      			}	
      		}
      		else
      		{
      			printf("格式化失败! \r\n");		
      		}
      	}
      	else if(res == FR_OK)
      	{
      		printf("挂载成功! \r\n");		
      	}
      	else
      	{
      		printf("挂载失败! \r\n");
      	}	
      	
      	res = f_open(&file,SD_FileName,FA_OPEN_ALWAYS |FA_WRITE);
      	if((res & FR_DENIED) == FR_DENIED)
      	{
      		printf("卡存储已满,写入失败!\r\n");		
      	}
      	
      	f_lseek(&file, f_size(&file));//确保写词写入不会覆盖之前的数据
      	if(res == FR_OK)
      	{
      		printf("打开成功/创建文件成功! \r\n");		
      		res = f_write(&file,write_buff,bufSize,&Bw);		//写数据到SD卡
      		if(res == FR_OK)
      		{
      			printf("文件写入成功! \r\n");			
      		}
      		else
      		{
      			printf("文件写入失败! \r\n");
      		}		
      	}
      	else
      	{
      		printf("打开文件失败!\r\n");
      	}	
      	
      	f_close(&file);						//关闭文件		
      	f_mount(NULL,"0:",1);		 //取消挂载
      	
      }
      
    3. 编译构建
      在这里插入图片描述
      没有错误。

    5.2 硬件连线

    USB和STM32芯片的连线和之前一样,这里主要是SD卡和STM32芯片的连线。【这里要选择 5V 要是电压不够大,后面的内容无法进行】

    SD卡STM32F103C8T6
    SDCSPA4
    SCKPA5
    MOSIPA7
    MISOPA6
    VCC5V
    GNDGND

    连线如下图:

    在这里插入图片描述

    5.3 结果及分析

    烧录代码, 打开串口调试助手
    在这里插入图片描述
    发现每按一次复位键,串口只发送“main”,说明SD卡并没有起到作用。

    将 SD 卡插到电脑上,可以看到弹出格式化 SD 卡的窗口:文件系统选择FAT(按下图设置)。
    在这里插入图片描述
    格式化成功。
    在这里插入图片描述
    再次烧录并打开串口,注意考虑是否线路连接正常(接触不良等问题。)初始化和发送数据的过程要等一会儿才能完成,大约几分钟。
    在这里插入图片描述
    初始化成功,显示了“总内存和可用内存,挂载成功,文件写入成功”等信息。

    再等待一会儿,就会发送“ while ”。表示成功。
    在这里插入图片描述把SD卡插到电脑上,可以看到里面有一个 “HELLO.TXT ” 文件。
    在这里插入图片描述
    打开该文件,发现前面几个字符出现了乱码。
    在这里插入图片描述
    这是代码中的问题,修改代码:将 main 函数中的如下函数进行修改(数字部分)。

    在这里插入图片描述
    再次编译、烧录、运行,最后打开 .TXT 文件。
    在这里插入图片描述
    可以看到问题解决了。(但是第二个字母发生了变化,按字母的顺序变化的,这里是代码中设置的“+1”,相当于ASCII码变化了,对应的内容也发生了变化。)

    6 总结

    • 原理图部分:原理图主要是连线仔细与否的问题。学习一个和专业相关的新软件,并明白要运用到的芯片的原理结构,能够帮助我们更直观地理解硬件与软件的交接。
    • SD卡读取部分:主要是供电电压不足的问题。在前人的基础上完成一件事情是容易的,但也没有任何成就感。我想我们更需要的是去做一个先行者。

    7 参考文献

    Altium Designer2018下载安装及基本使用
    STM32使用SPI方式读写SD 卡
    STM32——SD卡和FATFS文件系统

    展开全文
  • STM32F103RCT6电路引脚功能定义及部分参考电路设计.
  • 外设包含一个RGBLED,两个用户按键,一个复位按键。引出全部引脚。设计紧凑,可做智能手表等可穿戴设备的最小系统使用。
  • 绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现。模块的核心处理单元选用ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103C8T6。
  • 目录一、安装Altium Designe18二、用AD18绘制stm32最小系统的电路原理图1、新建工程2、添加原理图3、下载并添加元件库4、绘制芯片模块原理图4.1 常见的工具栏介绍4.2 延长管脚4.3 放置网络编号4.4 放置电源和地4.5 ...
  • STM32 JTAG电路设计

    千次阅读 2022-04-27 13:33:57
    注意后面这句话,可以通过将改管脚接VCC来禁用JTAG,意思是在不用JTAG的时候可以将其禁用, 那么在电路设计时,接入一个上拉电阻就行,尽管后面有25K的弱上拉,但是在调试过程中会出现高速下载的时候,下载不了程序...
  • STM32L053C最小系统电路原理图,使用 Altium Designer(AD)绘制,主要由主控电路、复位电路、晶振电路、CH340下载电路、LED指示电路等其他附属电路构成。
  • 在上一篇中我们已经搭建好了STM32开发环境,点亮了第一个LED灯,这一篇将从电路原理分析开始,对流水灯的控制原理,电路参数设计,STM32F103引脚与时钟的设置进行介绍。 流水灯电路设计 顾名思义,流水灯就是像水流...
  • 1,一个复位按钮,一个PA0唤醒按键,排针也引出了PA0 2,一路USB HOST对外,用于调试U盘啥的,对应的引脚排针也引出 3,一路typeC,也是USB device接口,排针处没有引出 4,一路 SPIfalsh集成,对应引脚排针已引出 5...
  • 二、绘制STM32电路原理图 2.1添加工程 2.2添加元件库 2.3绘制原理图 三、STM32+SD卡 的系统原理设计 总结 参考文献 一、下载安装Altium Designer 1.1下载Altium Designer 百度网盘链接:链接:...
  • 由于STM32芯片的费用不断的上升,很多小伙伴都开始做找替代芯片。...同时复位电路可以参考兆易创新官网的开发板原理图。 从《GD32F10x 用户手册》可以看到,GD32F103VET6要求外部时钟要求为4到16MHz。 ...
  • 开始学习STM32,第一步先制作STM32的最小系统,外设的话就用以前学单片机的外设,虽说这些...基于stm32的最小系统原理图,原理图包含stm32芯片,复位,电源电路等。 另外免费分享被人设计stm32最小系统,原理和pcb
  • Altium Designer绘制stm32电路原理

    千次阅读 多人点赞 2020-11-26 01:18:19
    Altium Designer绘制stm32电路原理图 文章目录Altium Designer绘制stm32电路原理图前期准备1.Altium Designer的安装2.单片机的最小系统图一、绘制stm32最小系统原理图(现元件库)二、绘制stm32最小系统原理...
  • 复位 :让MCU回到最开始的状态。并且从头开始,重新执行程序 我们什么时候需要复位? 1.烧录的时候 2.程序跑飞了的时候 3.上电复位(上电的时候需要复位复位方式: 1.上电复位: --- 一定要有 MCU的...
  • Altium Designer绘制stm32电路原理

    千次阅读 2021-12-16 19:34:28
    添加文本注释 下面就开始逐一绘制 芯片 电源指示灯和单片机应用灯 排针 输入、输出电源 下载方式选择 程序烧录/调试接口 去耦电路 复位电路 晶振电路 降压电路 一键添加标注 可以看到所有的?都自动标注好了数字 三...
  • STM32F407ZGT6(Mini)核心板--电路原理图.PDF
  • 摘 要: 本文介绍了STM32F103核心单元电路DE 设计注意事项和规范,考虑在不同产品类型设计的时候避免产生设计错误。 1.规范满足的技术指标 温度范围:-40~85℃。 满足功能:单片机最小系统运行,AD检测检测准确...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,449
精华内容 979
关键字:

stm32复位电路设计原理