STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用

news2024/9/28 17:22:54

STC单片机选择外部晶振烧录程序无法切换回内部晶振导致单片机不能使用

1.概述

在学习51单片机过程中,选择了STC的12C2052AD型号单片机作为入门芯片。前几个课题实验使用默认的内部晶振烧录程序,运行都没有问题。
选择一个LED亮度渐变的课题做实验,设置了外部晶振烧录程序。第一次烧录成功之后就再也不能烧录了,难道是单片机烧了?损坏了? 然后开始了各种折腾尝试过使用内部晶振烧录程序,外部晶振烧录都没有反应,被这个问题困扰住了。接下来的几天阅读STC12C2052AD单片机用户手册寻找答案。。。

2.场景复现

2.1.LED灯渐变实验步骤

  • 1.按照下图给出的接线图在面包板上接好元器件。如果没有多个LED灯,只接其中一个也可以。
  • 2.使用STC-ISP程序烧录程序,选择外部晶振。点击下载程序,成功。
  • 3.LED按照编写好的程序运行,亮度由暗到亮逐渐变化,这个实验完成了。
  • 4.断掉单片机的电源,拆下与单片机连接的元器件。
  • 5.给单片机通电,然后给单片机烧录程序,选择内部晶振。没有反应,不能烧录了。
  • 6.选择外部晶振,给单片机烧录程序,还是没有反应,不能烧录。

file

3.单片机起死回生

3.1.定位问题过程

第一次做出假设并验证

难道这个单片机坏了吗,还是STC-ISP烧录软件设置不正确,或者电压不稳定导致不能烧录程序,下面开始验证这几个假设。

  • 首先换了一个新的单片机按照上面的操作步骤烧录程序,第一次成功了,第二次同样不能烧录了。
  • 问题就出现在使用了外部晶振,难道是硬件导致的吗。

由于对单片机了解匮乏,暂时没有思路了,这个时候需要对单片机更加深入的了解,掌握更多的信息在来解决这个问题。
通过阅读STC12C2052AD单片机用户手册找到了如下两个关键信息

  • 单片机通过UART串口接收数据,需要晶振才能启动
  • STC-ISP设置外部晶振在下次冷启动后生效
第二次做出假设并验证
  • 1.第一次烧录程序选择外部晶振并不是通过外部晶振烧录程序,依旧使用内部晶振完成的烧录程序,需要在下次断电后才会切换为外部晶振。
  • 2.当第二次烧录程序时,LED灯渐变实验步骤4给单片机断电,并且拆除了外部晶振。导致第二次烧录程序使用外部晶振模式,但是硬件中没有外接晶振,UART串口无法传输数据导致烧录失败。即使后面尝试在STC-ISP烧录软件上设置为内部晶振也无法烧录,因为此时默认的模式是外部晶振。必须通过外部晶振烧录成功后,才可切换为内部晶振模式烧录程序。

3.2.解决方法

1.外部晶振烧录程序
  1. 首先按照上图将晶振与单片机连接好,使单片机可以通过外接的晶振起振。
  2. STC-ISP烧录软件设置内部晶振或者外部晶振都可以,因为当前单片机使用的是外部晶振。假设我们在STC-ISP设置为外部晶振模式,点击下载程序,程序烧录成功!
2.自由切换内外晶振烧录程序

上面的尝试验证了第二次的推理是正确的,那么掌握了这个原理后就可以随心所欲的切换内外晶振烧录程序了。

  • 内部晶振切换为外部晶振
1.单片机硬件上是否外接晶振不重要,只有一个单片机即可。
2.在STC-ISP上设置外部晶振,然后点击下载程序。此次烧录程序使用的是内部晶振,他会成功。
3.断掉单片机5V正极电源,在接通5V电源。此时单片机才切换到了外部晶振。
4.再次烧录程序就不会成功了,因为它切换为了外部晶振,只有硬件外接晶振才可烧录程序。
  • 外部晶振切换为内部晶振
1.当前单片机是外部晶振模式,第一次烧录程序必须为单片机硬件外接晶振,这样他才能通过外部晶振起振。
2.在STC-ISP上设置内部晶振,然后点击下载程序。此次烧录程序使用的是外部晶振。
3.断掉单片机5V正极电源,在接通5V电源。此时单片机才切换到了内部晶振。

4.总结

文章概述中描述的问题,原因有两点。

  1. 在STC-ISP设置内外部晶振模式,第一次烧录程序后并不生效,需要在烧录完成后,再手动冷启动后生效。
  2. 单片机烧录程序是通过UART串口,该串口数据传输依赖晶振,没有晶振将无法传输数据。

因此解决这个问题的关键点就是判断当前单片机使用的是内部还是外部晶振,如果无法判断当前使用是哪个晶振,那就把外部晶振接好,为单片机同时提供内外晶振,在烧录程序时有单片机自己选择。只要它找到了晶振就解决了不能烧录程序的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1235712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】构造函数详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Vue3 源码解读系列(九)——依赖注入

依赖注入 依赖注入用于祖先组件向后代组件传递数据。 特点: 祖先组件不需要知道哪些后代组件在使用它提供的数据。 后代组件也不需要知道注入的数据来自哪里。 /*** provide 的实现*/ function provide(key, value) {let provides currentInstance.provides // 当…

量子计算+物流!“最后一英里”配送难题Unisys成功实时决策

(图片来源:网络) 此前,供应链行业一直致力于手工操作,严重依赖于纸质系统。后来随着客户需求的不断变化,这种传统方法逐渐显出不足之处。供应链行业正在迅速转向现代化,采用自动化和数据驱动的…

【开源】基于微信小程序的音乐平台

项目编号: S 055 ,文末获取源码。 \color{red}{项目编号:S055,文末获取源码。} 项目编号:S055,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…

redis的一些操作

文章目录 清空当前缓存和所有缓存配置内存大小,防止内存饱满设置内存淘汰策略键过期机制 清空当前缓存和所有缓存 Windows环境下使用命令行进行redis缓存清理 redis安装目录下输入cmdredis-cli -p 端口号flushdb 清除当前数据库缓存flushall 清除整个redis所有缓存…

关于一些网络的概述

语义分割网络是一种基于深度学习的计算机视觉技术,它能够将图像中的每个像素分配给特定的类别,从而实现对图像中不同对象的精确识别和定位。近年来,随着深度学习技术的不断发展,语义分割网络在各个领域都取得了显著的进展。 早期的语义分割网络主要采用全卷积神经网络(FC…

大数据分析仓库Kylin

一、Kylin 定义 Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的 Hive 表。 二、Kylin 架构 A、REST Server 是应用程序…

操作系统基础操作

操作系统的启动 体系结构概念 CPU、I/O、内存-通过总线连接 操作系统一开始存放时没有放在内存里,而是当在DISK中,由BIOS提供相应支持 DISK:存放OSBIOS:基本I/O处理系统(计算机开机时可以让系统检测各种外设&#…

软文转化率如何提高,媒介盒子分享三大原则

决定软文推广的主要因素就在于软文内容,但是如何才能提高软文转化率呢?下面就让媒介盒子为你解答! 一、 软文类型 软文类型按照推广目标划分主要分为品牌软文、产品软文、营销软文。 ● 品牌软文 品牌软文的目的在于扩大品牌对群众的影响力…

基于Vue+SpringBoot的桃花峪滑雪场租赁系统

项目编号: S 036 ,文末获取源码。 \color{red}{项目编号:S036,文末获取源码。} 项目编号:S036,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

SpringCloud微服务 【实用篇】| Eureka注册中心、Ribbon负载均衡

目录 一:Eureka注册中心 1. Eureka原理 2. 动手实践 ①搭建EurekaServer ②服务注册 ③服务发现 二:Ribbon负载均衡 1. 负载均衡原理 2. 负载均衡策略 3. 懒加载 一:Eureka注册中心 前面已经分析了,无论是SpringCloud还…

从0开始学习JavaScript--JavaScript中的集合类

JavaScript中的集合类是处理数据的关键,涵盖了数组、Set、Map等多种数据结构。本文将深入研究这些集合类的创建、操作,以及实际应用场景,并通过丰富的示例代码,帮助大家更全面地了解和应用这些概念。 数组(Array&…

【Java】NIO概述

本文主要介绍Java的IO。 这里主要按类的操作方式和操作对象对JavaIO进行分类,方便理解,后续使用时可以方便地查询。 一、操作方式分类 首先介绍几组概念: 字节流和字符流: 字节流:以字节为单位,每次次读…

【高级网络程序设计】Week2-3 HTML

一、The Basics 1. HTML&HTML file HTMLMarkup languageHyper Text Markup LanguageHTML fileText file with markup tags.htm/.html extension Create an html file Open an editor Type: <html><head><titile><body> Save it as .html Open i…

计算机网络——网络可靠性及网络出口配置

1. 前言&#xff1a; 学习目标&#xff1a; 1.了解链路聚合的作用 2. 了解ACL的工作原理 3. 了解NAT的工作原理和配置 2. 网络可靠性方案 网络可靠性是指网络在面对各种异常情况或故障时&#xff0c;能够维持正常运行和提供服务的能力。这包括防止网络中断、减小数据丢失的可能…

vue3中使用全局自定义指令和组件自定义指令

这篇文章会教大家如何实现全局自定义指令和组件自定义指令 &#x1f4d3;全局自定义指令和组件自定义指令的区别&#xff0c;除了写法不同和作用不同&#xff0c;其他的包括生命周期的使用方法都是一致的&#xff0c;全局自定义指令在main.ts中注册后整个项目都可以使用&#x…

dvwa-command injection 代码审计(超详细逐行审计)

dvwa-command injection 代码审计 low <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target $_REQUEST[ ip ];// Determine OS and execute the ping command.if( stristr( php_uname( s ), Windows NT ) ) {// Windows$cmd shell_exec( ping . $target );}…

Parallel Diffusion Models of Operator and Image for Blind Inverse Problems

盲逆问题算子和图像的并行扩散模型 论文链接&#xff1a;https://arxiv.org/abs/2211.10656 项目链接&#xff1a;https://github.com/BlindDPS/blind-dps Abstract 在正向算子已知的情况下(即非盲)&#xff0c;基于扩散模型的逆问题求解器已经展示了最先进的性能。然而&…

linux md5sum计算hash指令

在soc启动&#xff0c;验证镜像签名时&#xff0c;会计算文件的hash值&#xff0c;确保文件未被修改&#xff0c;md5sum可以计算&#xff0c;有256,512位的的其他指令&#xff0c; 如下&#xff0c;计算文件hash值。

@PostConstruct虽好,请勿乱用

1.问题说明 在日常的业务开发中&#xff0c;有时会利用PostConstruct在容器启动时执行一些任务。例如&#xff1a; PostConstruct public void init(){System.out.println("service 初始化..............."); }一般情况这没什么问题&#xff0c;但最近一个同事在做…