STM32/单片机编程
一、安装Proteus和电路仿真
1、Proteus的安装
(安装教程参考:【01 Proteus8.15安装教程,仿真STM32C8型号】 https://www.bilibili.com/video/BV1VN41127Jy/?share_source=copy_web&vd_source=b2dc1dd9b96acd371b2d1daeb8b328dd)
2、熟悉Proteus工具
第一、学习并熟悉如何在Proteus软件中创建一个工程:可以直接在Proteus
发黑灰分工会俄共而靠近南极屋内分年内
第二:熟悉原理图界面的各种工具,如工具栏、元件列表、仿真测试等按钮所在
第三:绘制一个简单的原理图:点击绘制原理图按钮,点击"P"按钮选择我们所需要的元件并摆放在原理图编辑窗口内(如下图所在)
第四:连接各个元器件并点击仿真按钮进行电路仿真
二、安装mdk5和stm32包并运行简单程序
1、mdk5(kill5)安装和stm32:(参考链接【keil与proteus的零基础安装教程(内附全套安装包)】 https://www.bilibili.com/video/BV1uv4y1w7wB/?share_source=copy_web&vd_source=b2dc1dd9b96acd371b2d1daeb8b328dd)
注:在MDK中编译程序在Proteus中运行需要安装一个kell c51 v9.56 ,可以直接在浏览器中搜索安装
2、在kill中新建一个文件,之后我们将可以在里面进行代码编译(代码如下)
`#include<reg51.h>
sbit p1_0=P1^0;
sbit p1_7=P1^7;
main()
{
int i;
while(1)
{
p1_0=0;
do{}while(p1_7=1);
do{}while(p1_7=0);
p1_0=1;
for(i=0;i<=255;i++){};
}
(注:代码的目的是利用8XX51的P1口,用发光二极管监测某一按键开关,使每按键一次,输出一个正脉冲。因此编译前,点击魔法棒的Output勾上Create HEX_File,这样编译后才能生成proteus能用的HEX文件)
在Proteus中搭建电路并进行仿真(详细见一过程)
三arm与ATM32相关问题思考
1、地址和寻址:对内存中的变量进行读写时,使用的是变量的内存地址。而对外部设备的操作通常涉及特定的寄存器或管脚,需要通过相应的地址或引脚编号来进行访问。
数据传输方式:内存中的变量通常通过数据总线或指针来传输。对外部设备的操作可能涉及到特定的通信协议,如I2C、SPI、UART等,需要根据协议规范来进行数据传输。
外部设备特定功能:外部设备通常具有特定的功能和操作方式,例如传感器、显示器、通信接口等。对外部设备的操作可能涉及到更复杂的功能设置和通信协议,需要根据设备的规格和要求进行相应的配置和操作。
时间和时序:对外部设备的操作可能需要考虑时间和时序的因素。例如,在向设备发送命令或数据之前,可能需要等待设备准备好或满足特定的时序要求。这些时间和时序要求在内存操作中通常不会涉及。
2.为什么51单片机的LED点灯编程要比STM32的简单?
第一:不同的系统资源可能导致差异,一般来说,STM32的资源比51单片机多。
第二:51单片机不支持操作系统,而STM32支持各种主流操作系统。STM32更容易开发,可以方便地实现各种场景下的应用。由于51单片机没有操作系统,其发展存在一定的STM32的处理速度比51快,外围功能丰富强大,所以价格一般比51单片机贵。在项目选择过程中,需要根据项目的功能要求选择合适的单片机。如果可以用51单片机,那么考虑到工程造价,绝对不可能选择
STM。
四、两个关键字解释
register关键字:
register关键字用于建议编译器将变量存储在寄存器中,以便快速访问。它只是一种建议,编译器可以选择是否将变量存储在寄存器中。
`register int counter;
void incrementCounter() {
for (counter = 0; counter < 10; counter++) {
//
}
}
。
volatile关键字:
volatile关键字用于告诉编译器该变量的值可能在程序执行期间发生变化,编译器不应该对该变量进行优化,以确保每次访问都从内存中读取最新的值。
下面是一个使用volatile关键字的示例
volatile int flag; // 使用 volatile 关键字声明一个中断标志变量
void interruptHandler() {
flag = 1; // 标记中断发生
}
void processInterrupt() {
if (flag) {
// 处理中断
flag = 0; // 重置中断标志
}
————————————————
原文链接:https://blog.csdn.net/qwert_qqq/article/details/133253310
链接:https://blog.csdn.net/qwert_qqq/article/details/133253310`