当前位置: 首页 > news >正文

proteus结合keil-arm编译器构建STM32单片机项目进行仿真

    proteus是可以直接创建设计图和源码的,但是源码编译它需要借助keil-arm编译器,也就是我们安装keil-mdk之后自带的编译器。

    下面给出一个完整的示例,主要是做一个LED灯闪烁的效果。

    新建工程指定路径,Schematic,PCB layout都选择默认,在最后创建项目工程向导的时候,选择:Create Firmware Project:

     硬件系列选择Cortex-M3,控制器类型选择STM32F103C6(其他类型,可能不会出现Compiler下拉选项),编译器类型如果没有选择项,点击后面的Compilers按钮,在弹出框中选择Keil for ARM,指定keil-mdk安装的ARM路径:

    这样生成的项目,自带源码,源码结构如下所示:

 

    这个源码还自带了标准库中的很多东西,启动文件,核心文件,所以直接编译也是没有问题的。

 

     这里虽然有了标准库中的很多内容,但是一些初始化的功能代码并不在这里,所以需要通过操作寄存器来实现点灯操作。

    如下所示,是一个简单的 通过操作寄存器来让GPIOA的GPIO_Pin_5端口作为电平输出口,并开启时钟使能的代码。

#include <stm32f103x6.h>
#include <stm32f1xx.h> #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) #define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C 
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)#define LED0 PAout(5) // PA5 void Delay_nms(unsigned int time)
{    unsigned int i=0;  while(time--){i=12000;  while(i--) ;    }
}void LED_Init(void)
{   RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // clock enableGPIOA->CRL &= 0XFF0FFFFF;  //PA5GPIOA->CRL |= 0X00300000;  //PA5 GPIOA->ODR |= 1<<5;        //PA5 
}int main (void)
{    LED_Init(); while (1){LED0 = 0;Delay_nms(50); LED0 = 1;Delay_nms(50); }
}

    项目源码构建成功:

    接着,我们直接在原理图Schematic这里添加发光二极管和电阻并连线就可以开始仿真了。

 

    前面源码构建好了,这里原理图简单添加了LED就可以进行仿真了。效果如下所示:

 

    这种构建仿真,原理图加源码的方式很适合没有单片机,而且不用在Keil和Proteus之间来回切换的情况,但是它的源码是在临时文件夹中,如下所示:

 

    这种方式对于复杂项目而言,可能也有一些弊端。 

相关文章:

proteus结合keil-arm编译器构建STM32单片机项目进行仿真

proteus是可以直接创建设计图和源码的&#xff0c;但是源码编译它需要借助keil-arm编译器&#xff0c;也就是我们安装keil-mdk之后自带的编译器。 下面给出一个完整的示例&#xff0c;主要是做一个LED灯闪烁的效果。 新建工程指定路径&#xff0c;Schematic,PCB layout都选择默…...

第五十三天

●剪辑——Pr 剪辑(Film editing)&#xff0c;即将影片制作中所拍摄的大量素材&#xff0c;经过选择、取舍、分解与组接&#xff0c;最终完成一个连贯流畅、含义明确、主题鲜明并有艺术感染力的作品。 •线性编辑 将素材按时间顺序连接成新的连续画面的技术 •非线性编辑 …...

gorm基本操作

一、gorm安装 1.下载gorm go get -u gorm.io/gorm //gorm框架 go get -u gorm.io/driver/mysql //驱动2.mysql准备工作 mysql> create database godb; mysql> grant all on *.* to admin% identified by golang123!; mysql> flush privileges;3.导入gorm框架 impo…...

华为OD机试 - 排队游戏(Java JS Python)

题目描述 新来的老师给班里的同学排一个队。 每个学生有一个影力值。 一些学生是刺头,不会听老师的话,自己选位置,非刺头同学在剩下的位置按照能力值从小到大排。 对于非刺头同学,如果发现他前面有能力值比自己高的同学,他不满程度就增加,增加的数量等于前面能力值比…...

滚动条样式更改

::-webkit-scrollbar 滚动条整体部分&#xff0c;可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端的按钮 ::-webkit-scrollbar-track 外层轨道 ::-webkit-scrollbar-track-piece 内层滚动槽 ::-webkit-scrollbar-thumb 滚动的滑块 ::-webkit-scrollbar…...

掌握Python的X篇_33_MATLAB的替代组合NumPy+SciPy+Matplotlib

numPy 通常与 SciPy( Scientific Python )和 Matplotlib (绘图库)一起使用&#xff0c;这种组合广泛用于替代 MatLab&#xff0c;是一个强大的科学计算环境&#xff0c;有助于我们通过 Python 学习数据科学或者机器学习。 文章目录 1. numpy1.1 numpy简介1.2 矩阵类型的nparra…...

Python解决-力扣002-两数相加

两数相加&#xff1a;链表表示的逆序整数求和 在这篇技术博客中&#xff0c;我们将讨论一个力扣&#xff08;LeetCode&#xff09;上的编程题目&#xff1a;两数相加。这个问题要求我们处理两个非空链表&#xff0c;它们表示两个非负整数。每个链表中的数字都是逆序存储的&…...

nginx基于源码安装的方式对静态页面、虚拟主机(IP、端口、域名)和日志文件进行配置

一.静态页面 1.更改页面内容 2.更改配置文件 3.测试 二.虚拟主机配置 1.基于IP &#xff08;1&#xff09;在html目录下新建目录存放测试文件 &#xff08;2&#xff09;修改nginx.conf文件&#xff0c;在htttp模块中配置两个server模块分别对应两个IP &#xff08;3&am…...

[FPAG开发]使用Vivado创建第一个程序

1 打开Vivado软件&#xff0c;新建项目 选择一个纯英文路径 选择合适的型号 产品型号ZYNQ-7010xc7z010clg400-1ZYNQ-7020xc7z010clg400-2 如果型号选错&#xff0c;可以单击这里重新选择 2 创建工程源文件 可以看到文件创建成功 双击文件打开&#xff0c;插入代码 modul…...

使用 Python 在 NLP 中进行文本预处理

一、说明 自然语言处理 &#xff08;NLP&#xff09; 是人工智能 &#xff08;AI&#xff09; 和计算语言学的一个子领域&#xff0c;专注于使计算机能够理解、解释和生成人类语言。它涉及计算机和自然语言之间的交互&#xff0c;允许机器以对人类有意义和有用的方式处理、分析…...

[足式机器人]Part3机构运动微分几何学分析与综合Ch03-1 空间约束曲线与约束曲面微分几何学——【读书笔记】

本文仅供学习使用 本文参考&#xff1a; 《机构运动微分几何学分析与综合》-王德伦、汪伟 《微分几何》吴大任 Ch01-4 平面运动微分几何学 3.1 空间曲线微分几何学概述3.1.1 矢量表示3.1.2 Frenet标架 连杆机构中的连杆与连架杆构成运动副&#xff0c;该运动副元素的特征点或特…...

pytest框架快速进阶篇-pytest前置和pytest后置,skipif跳过用例

一、Pytest的前置和后置方法 1.Pytest可以集成unittest实现前置和后置 importunittestimportpytestclassTestCase(unittest.TestCase):defsetUp(self)->None:print(unittest每个用例前置)deftearDown(self)->None:print(unittest每个用例后置)classmethoddefsetUpClass…...

Python 基础语法 | 常量表达式,变量,注释,输入输出

常量和表达式 我们可以把 Python 当成一个计算器&#xff0c;来进行一些算术运算 print(1 2 - 3) # 0 print(1 2 * 3) # 7 print(1 2 / 3) # 1.6666666666666665注意&#xff1a; print 是一个 Python 内置的 函数可以使用 - * / () 等运算符进行算术运算&#xff0c;先…...

SQL | 分组数据

10-分组数据 两个新的select子句&#xff1a;group by子句和having子句。 10.1-数据分组 上面我们学到了&#xff0c;使用SQL中的聚集函数可以汇总数据&#xff0c;这样&#xff0c;我们就能够对行进行计数&#xff0c;计算和&#xff0c;计算平均数。 目前为止&#xff0c…...

软件测试技术之如何编写测试用例(6)

四、客户端兼容性测试 1、平台测试 市场上有很多不同的操作系统类型&#xff0c;最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统&#xff0c;取决于用户系统的配置。这样&#xff0c;就可能会发生兼容性问题&#xff0c;同一个应…...

论文阅读——Adversarial Eigen Attack on Black-Box Models

Adversarial Eigen Attack on Black-Box Models 作者&#xff1a;Linjun Zhou&#xff0c; Linjun Zhou 攻击类别&#xff1a;黑盒&#xff08;基于梯度信息&#xff09;&#xff0c;白盒模型的预训练模型可获得&#xff0c;但训练数据和微调预训练模型的数据不可得&#xff…...

自然语言处理从入门到应用——LangChain:记忆(Memory)-[自定义对话记忆与自定义记忆类]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 自定义对话记忆 本节介绍了几种自定义对话记忆的方法&#xff1a; from langchain.llms import OpenAI from langchain.chains import ConversationChain from langchain.memory import ConversationBufferMemoryllm…...

【C/C++】STL queue 非线程安全接口,危险!

STL 中的 queue 是非线程安全的&#xff0c;一个组合操作&#xff1a;front(); pop() 先读取队首元素然后删除队首元素&#xff0c;若是有多个线程执行这个组合操作的话&#xff0c;可能会发生执行序列交替执行&#xff0c;导致一些意想不到的行为。因此需要重新设计线程安全的…...

执行Lua脚本后一直查询不到Redis中的数据(附带问题详细排查过程,一波三折)

文章目录 执行Lua脚本后一直查询不到Redis中的数据&#xff08;附带详细问题排查过程&#xff0c;一波三折&#xff09;问题背景问题1&#xff1a;Lua脚本无法切库问题2&#xff1a;RedisTemlate切库报错问题3&#xff1a;序列化导致数据不一致问题4&#xff1a;Lua脚本中单引号…...

[高光谱]PyTorch使用CNN对高光谱图像进行分类

项目原地址&#xff1a; Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-ClassificationDataLoader讲解&#xff1a; [高光谱]使用PyTorch的dataloader加载高光谱数据https://blog.csdn.net/weixin_37878740/article/details/130929358 一、模型加载 在…...

从Revit/BIM到Cesium:CesiumLab 4.0.7插件全流程打通,属性信息一个不丢

从Revit到Cesium的无损数据迁移&#xff1a;CesiumLab 4.0.7全流程深度解析 1. BIM与三维GIS融合的技术演进 在建筑信息模型&#xff08;BIM&#xff09;与地理信息系统&#xff08;GIS&#xff09;的交叉领域&#xff0c;数据互操作性一直是行业痛点。传统工作流中&#xff0c…...

直播录制从未如此简单:StreamCap 40+平台自动录制全攻略

直播录制从未如此简单&#xff1a;StreamCap 40平台自动录制全攻略 【免费下载链接】StreamCap Multi-Platform Live Stream Automatic Recording Tool | 多平台直播流自动录制客户端 基于FFmpeg 支持监控/定时/转码 项目地址: https://gitcode.com/gh_mirrors/st/StreamCa…...

Solid Converter 10.1【PDF编辑器】办公必备工具套装!

如大家所熟悉的&#xff0c;‌Solid Converter‌是一款功能强大且应用较为广泛的一系列专业文档处理工具&#xff0c;主要用于 PDF文件的转换、编辑、创建与扫描‌。目前比较常用的版本为Solid Converter 10.1&#xff0c;深受使用者的青睐。接下来&#xff0c;小编将从使用场景…...

告别默认丑样式!手把手教你用WPF的ControlTemplate打造高颜值TreeView(附完整XAML代码)

从零打造高颜值WPF TreeView&#xff1a;深度定制ControlTemplate实战指南 每次打开Visual Studio新建WPF项目时&#xff0c;看到那个灰头土脸的默认TreeView控件&#xff0c;总有种说不出的失落感。作为数据展示的核心控件之一&#xff0c;TreeView在文件浏览器、配置面板、数…...

从零构建数字货币量化交易系统:Python实战指南

1. 为什么选择Python构建量化交易系统&#xff1f; 在数字货币市场这个724小时运转的竞技场中&#xff0c;量化交易就像一位不知疲倦的钢铁战士。我2018年第一次尝试用Python写交易策略时&#xff0c;发现它简直是量化的"瑞士军刀"。想象一下&#xff0c;你正在用Exc…...

回归分析中的t检验、F检验和相关系数检验:如何选择与解读(附Python代码示例)

回归分析中的t检验、F检验和相关系数检验&#xff1a;如何选择与解读&#xff08;附Python代码示例&#xff09; 在数据分析的实际工作中&#xff0c;回归分析是最基础也最强大的工具之一。无论是预测销售额、分析用户行为&#xff0c;还是评估营销效果&#xff0c;回归模型都能…...

Oracle到MySQL迁移必看:INSTR函数跨库兼容处理指南(附SQLServer替代方案)

Oracle到MySQL迁移实战&#xff1a;INSTR函数深度兼容方案与企业级案例解析 当企业面临数据库迁移需求时&#xff0c;函数兼容性往往是技术团队最头疼的问题之一。作为字符串处理的核心函数&#xff0c;INSTR在Oracle、MySQL和SQL Server三大主流数据库中存在显著差异。本文将深…...

Open UI5 源代码解析之884:OverflowToolbarAssociativePopover.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.m\src\sap\m\OverflowToolbarAssociativePopover.js OverflowToolbarAssociativePopover.js 深度解析 文件定位与整体价值 OverflowToolbarAssociativePopover.js 是 sap.m 库里一个非常典型的内部增强组…...

基于 IWR6843毫米波雷达 的多人跟踪与跌倒检测系统

这是一个面向室内人体感知场景的毫米波雷达项目&#xff0c;核心功能是&#xff1a;多人目标实时跟踪 跌倒检测可视化。项目基于 IWR6843 DCA1000 实现&#xff0c;页面可以直接完成雷达配置、实时目标显示、轨迹跟踪和跌倒告警展示&#xff0c;适合做演示、方案展示和二次开…...

告别玄学预测:用Google TimesFM给你的业务数据(销售/流量/库存)做个靠谱的“体检报告”

告别玄学预测&#xff1a;用Google TimesFM给你的业务数据做个靠谱的“体检报告” 每次季度复盘会上&#xff0c;市场部的小王总会被老板问到同一个问题&#xff1a;"下个季度的销量到底会涨还是跌&#xff1f;"而他的回答往往只能基于上个月的增长率拍脑袋——直到市…...