单片机学习小组
直播中

骨灰级发烧友

12年用户 673经验值
私信 关注

如何完成STM32的USART窗口通讯实验

寄存器与基于固件库编程方式的差异在哪?
如何完成STM32的USART窗口通讯实验?

回帖(1)

李子邯

2022-2-24 15:03:06
一、寄存器与基于固件库编程方式的差异

相对于库开发的方式,如果我们直接配置寄存器,这种方式生成的代码量是更少一点,但我们用的是stm32,这就不一样了,因为stm32 的资源是充足的,所以我们可以也愿意牺牲CPU 资源来投入库开发。而我们也发现固件库编写方式更为简单,连我这种新人理解也很容易,网上这方面的资料也更多。

二、STM32的USART窗口通讯


1.准备


和之前的实验一样,我们用到了如下工具设备:
高速仿真器
野火指南者STM32F103VET6高速版
keil5
串口调试助手Fire Tools(v1.0.1.5)
USBQ驱动CH340(只有开发板串口有驱动,仿真器不用安装驱动)

2.实验


像之前一样,连好设备,确认好设备无误后,打开开关。

还是要注意串口这个地方的链接!不然要出大问题:

安装USB转串口驱动CH340(在自己买的开发板的店铺找相关资料)

安装串口多功能调试助手Fire Tools
这个是跟我的开发板配套的调试助手

直接点击就用

串行口调试设置波特率为115200,1位停止位,无校验位
然后我们打开相应工程,如下图


这是学习资料里自带的工程,现在我们进行一些修改


上图是修改的main.c和stm32f10x_it.c
现在进行编译,没有问题

点击魔术棒进行配置



研究了一下,发现SWJ其实两个选择都可以,因为是高速仿真器,配置完成。现在进行调试和烧录。


烧录成功!现在来看结果。

完成

三.C语言程序里全局变量、局部变量、堆、栈


我们可以把内存作为4个分区:栈、堆、全局(静态)存储区和常量存储区

1.栈、堆、全局(静态)存储区和常量存储区


(一)栈
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
(二)堆
堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。

(三)全局/静态存储区
可以理解为全局变量和静态变量被分配到同一块内存中

(四)常量存储区
和“全局/静态存储区”差不多,只不过存放的是常量

2.ubuntu系统中编程


创建.c文件,并用gcc执行,结果


3.keil验证


举报

更多回帖

发帖
×
20
完善资料,
赚取积分