STC单片机用户程序控制ISP下载

news/2025/10/10 10:51:10/文章来源:https://www.cnblogs.com/loganxiang/p/19131319

不知道大家有没有遇到过这样想喊“我C”的问题?
设计打样了一块STC单片机的PCB电路板,焊好单片机想下载程序才发现,没有设计电源开关和复位开关。USB转串口芯片直接设计在同一块板子上,没有办法单独断电。
不知道大家碰到这种情况有没有好的解决方案,反正我都快要放弃这块板子了。
好在STC比较强大(网站和文档也是相当的强大),单片机产品手册上就有成熟的用户自定义下载方案。

STC-ISP程序下载原理

STC单片机的产品手册,有大量ISP/IAP程序下载的相关描述,大致原理如下:

  1. ISP软件点击下载后,以固定波特率向单片机发送'0x7F';
  2. 单片机复位后(上电、硬复位或软复位)进入ISP监控程序区;
  3. 监控程序判断串口数据是否为合法ISP下载命令流;
  4. 是合法ISP下载命令流,执行ISP下载程序,完成后复位到用户程序区;
  5. 非合法ISP下载命令流,直接复位到用户程序区;

STC用户自定义下载(不停电下载)功能

通过用户程序进入ISP下载区有两个方法:

  • 用户程序直接跳转到ISP监控程序(需要知道函数地址);(实际上跳转到MCU上电运行的地址应该也行,没有试过,感兴趣的朋友可以测试一下)
  • 用户程序软复位到ISP监控程序;

实际上第二种方法更简单一点,STC专门设计了一个寄存器IAP_CONTR用于控制软件复位并选择跳转方向(0x20去用户程序,0x60去用户监控程序),官方手册上就有明确的功能描述。
用户程序可以设计当某个按键被按下或者UART接受到下载命令流时,软复位进入ISP监控程序。
如果你像我一样"衰",没有断电开关和硬复位按钮,建议至少设计保留2种进入ISP监控程序的方法,避免程序无法下载。

STC用户自定义下载部分实现代码

软复位进ISP监控程序区代码:

//userisp.h
#define IAP_MODE_RESET	0x20
#define IAP_MODE_ISP	0x60#define UserISP(mode)	IAP_CONTR = mode

按钮被按下,调用ISP跳转函数:

//userisp.c
//定时器回调函数,系统1s定时器函数中调用
//判断下载按键是否被按下,按下后复位到ISP监控程序区
void TimerCallBackUserISP(void)
{if(ISPButton)UserISP(IAP_MODE_ISP);
}

程序下载方法:

  1. ISP软件点击下载;
  2. 按下下载按键并保持1s以上,确认下载已启动后释放;

彩蛋:第一次程序是怎么下载的?

首次下装还是比较麻烦的,先拆除USB转串口芯片,焊接飞线连接到外围USB转串口模块上进行ISP下载,原来的USB口仅用于供电。
确保程序自定义下载可靠后,再焊回USB转串口芯片。

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

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

相关文章

国产DevOps工具链崛起:Gitee如何助力企业数字化转型破局

国产DevOps工具链崛起:Gitee如何助力企业数字化转型破局 在全球数字化转型加速的背景下,中国企业正面临着独特的挑战与机遇。一方面,国际局势变化使得技术自主可控成为刚需;另一方面,国内企业亟需通过DevOps实践提…

SAP移动类型TR和TF和TP

SAP移动类型TR和TF的主要区别在于它们的功能和应用场景不同。‌TF transfer正向移动类型传输过帐,一般不产生会计凭证。‌TP:transfer posting转储过帐,性质上的改变,产生会计凭证TR transfer reverse 反向移动类…

深入解析:分布式之RabbitMQ的使用(2)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

docker-compose 启动 elk

一 docker-compose 新增节点# elasticsearchelasticsearch:image: elasticsearch:7.17.6container_name: elasticsearchports:- "9410:9410"- "9420:9420"environment:# 设置集群名称cluster.name…

Gitee领航中国DevOps市场:本土化优势与云原生战略的双轮驱动

Gitee领航中国DevOps市场:本土化优势与云原生战略的双轮驱动 中国DevOps市场正在经历前所未有的高速发展期,这一现象背后折射出的是中国数字化转型浪潮的加速推进。根据最新市场研究数据显示,到2025年中国DevOps市场…

禅道怎么更新MySQL数据库的用户名和密码

创建用户并授权 需要使用本地地址127.0.0.1连接MySQL数据库否则可能授权失败> create user zentao@% identified by password; > grant all on zentao.* to zentao@%; > flush privileges修改配置文件 配置文…

【IEEE出版、EI检索稳定】 第五届数字化社会与智能系统国际学术会议(DSInS 2025)

第五届数字化社会与智能系统国际学术会议(DSInS 2025) 2025 5th International Conference on Digital Society and Intelligent Systems 多届IEEE稳定出版,EI检索稳定,录用率高 海南大学等多所高校联合主办丨确定…

【2025-10-03】连岳摘抄

23:59当你原谅别人时,对方可能没有察觉,但你会释怀。宽恕不是为了别人,宽恕是我们给自己的礼物。——凯文凯利有了孩子,吵架、打架确实不好,一是对孩子有不良示范,二是父母就是孩子的天,再小的事他们也以为是天…

maxscript的自动科学计数法转换导致dotnet json序列化识别错误

intEndFrame = -2147483648 -- print -2.14748e+09 classof intEndFrame -- float--转json后是 {"key":-2.14748365E+09} -2.14748365 10⁹ = -2,147,483,650 这玩意已经不在int32范围内intEndFrame = dot…

国产项目管理工具Gitee:本土化优势赋能企业数字化转型

国产项目管理工具Gitee:本土化优势赋能企业数字化转型 在数字化转型浪潮席卷全球的当下,项目管理工具已成为企业提升协作效率的关键基础设施。随着国内技术自主可控需求的日益增强,本土项目管理平台迎来了前所未有的…

【光照】UnityURP[光照贴图]GPU instancing在静态动态物体上的应用

该专栏探讨了Unity URP中静态和动态物体的GPU实例化技术要点。对于静态物体,需标记为BatchingStatic并禁用静态合批,通过LightmapIndex绑定光照贴图,在着色器中添加实例化支持。动态物体则依赖光照探针获取间接光照…

Vue3路由传递复杂参数(比如一个对象)

在 Vue 3 中,需要通过路由传递复杂参数(比如一个对象)时,有多种方法可以实现。下面我为你详细介绍几种主流方式,并提供相应的代码示例。最佳实践提示:传递复杂对象时,由于 URL 有长度限制,对于数据量较大的对象…

2025 年国内一体板厂家最新推荐排行榜:装配式 / 珍珠岩 / 免拆 / 外墙保温品类优质企业权威精选

在建筑节能与绿色发展政策驱动下,一体板因整合保温、装饰、防火等功能成为建筑项目核心选材,市场规模持续扩张。但行业快速发展伴随乱象:部分企业以次充好,用劣质芯材降低成本,导致产品防火等级不足、保温性能衰减…

系统提示词优化模板-通用优化-带输出格式要求

你是一个专业的AI提示词优化专家。请帮我优化以下prompt,并按照以下格式返回: # Role: [角色名称] ## Profile- language: [语言]- description: [详细的角色描述]- background: [角色背景]- personality: [性格特征…

CRMEB标准版PHP订单列表源码解析:自定义字段与导出功能

订单列表 订单列表显示商城所有订单信息,包含待支付、待发货、待核销、待收货、待评价、已完成及售后订单;可以根据订单类型、支付方式,订单创建时间,关键字(订单号、用户id、用户名称、用户电话、商品名称等)进…

odoo18安装环境

odoo18 1 安装python 3.11.9 2 安装node.js 14.21.3 安装配置运行环境 重启... 3 安装pycharm配置 python git 下载依赖库 python -m pip -r requirements.tex

系统提示词优化模板-通用模板

你是一个专业的AI提示词优化专家。请帮我优化以下prompt,并按照以下格式返回: # Role: [角色名称] ## Profile- language: [语言]- description: [详细的角色描述]- background: [角色背景]- personality: [性格特征…

aardio编程中的常量

aardio编程中的常量二. 常量( constants ) # 在程序运行过程中,用来存储数据值并且其值不能被改变的对象称为常量,常量赋为非 null 值以后就不能再更改值。 常量名使用首字符为下划线且长度大于 1 个字节、小于 25…

Group Theory Note 2/2 (Michael Artin Algebra Chapter 2 Groups) (to complete)

2.6 ISOMORPHISMS 2.6.1 Def. (Isomorphism) Bijective group homomorphism. Notation: \(G \approx G\) 2.6.2 Lemma. $\varphi: G \to G \text{ is isomorphism } \leftrightarrow \varphi^{-1}: G \to G \text{ is …

开源 C# 快速开发(三)复杂控件 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …