stm32
文章平均质量分 68
stm32相关的嵌软进阶
木草草幂
这个作者很懒,什么都没留下…
展开
-
stm32的printf使用
在刚开始学习C语言的时候,都使用过printf函数,支持的格式比较齐全,相打印什么样的信息都比较好实现。在使用STM32的过程中,也可以使用printf函数,printf函数是C语言stdio的库里定义好的函数,或者在stm32中,推荐勾选use microlib库,printf函数调用了fputc函数,这个函数也在库里被“弱定义”了,弱定义指的是如果有在其他地方重新定义,则使用重新定义的函数,若没有找到,则使用之前“弱定义”好的函数。在startup.s文件中,就弱定义了很多函数,都可以重新被定义,如下。原创 2024-01-15 22:41:38 · 1469 阅读 · 0 评论 -
STM32新建汇编工程1
之前做汇编比较少,再想深入学习rtos的时候,需要先熟悉一下汇编,方便后续在rtos中写一部分任务切换的代码,也可以深入了解单片机的底层运行原理。原创 2024-01-11 20:45:05 · 368 阅读 · 0 评论 -
STM32新建汇编工程2
然后直接新建工程,新建完工程后,再去之前的工程中,只将startup_stm32f10x_hd.s文件拷贝过来,放置到新建的工程目录下,然后在界面中加入已经存在的文件,然后新建一个main.s文件,将上篇文章中的代码拷贝过来,如下图。上一篇文章里写了新建工程的过程中,使用了keil提供的文件,也可以不使用,自己手动拷贝,这样工程会更简单一些,只需要拷贝启动文件一个即可,如下界面里不做选择。由于没有系统时钟配置部分的c代码,需要修改启动代码中调用了系统时钟初始化的部分,注释掉即可,如下图。原创 2024-01-11 20:53:13 · 324 阅读 · 0 评论 -
STM32汇编程序闪烁LED灯1
原因是在reset handler中,首先调到了__main函数中,这个函数不是main函数,而是在C库中(默认不带micro lib编译的时候),这个函数主要的作用就是内存初始化,包括将初始化过的可读写的全局变量和静态变量拷贝到内存对应的区域,初始化那些初始化为0的静态变量和全局变量,然后将栈顶地址和堆地址设置好,之后跳转到main函数,在这个过程中可能会碰到一个BKPT 0xAB的地方,是内核调试的一个相关指令,导致程序出问题,编译为microlib就可以避免这个问题。原创 2024-01-11 21:10:58 · 446 阅读 · 0 评论 -
STM32代码中变量定义后的放置的位置
写一个如下所示的代码,可以查看各种类型的变量的存储位置。还需要看一下map文件,先确认一下各个区域的范围。可以看出主要分为以下4个区域。原创 2024-01-14 22:38:39 · 431 阅读 · 1 评论