单片机
文章平均质量分 61
Mr1sky
这个作者很懒,什么都没留下…
展开
-
【stm32】【KEIL】【单片机】【C++ 】 嵌入式开发事半功倍
(废)话多不表,开整!.cpp(c++源文件)和.hpp(c++头文件)只做和C++有关的,.c(c源文件)和.h(c头文件)只做和C有关的。.h文件:最不可思议的就是这个头文件了,所做的事就是把用c++写的对外函数的接口用extern“引用”,如果其他.c文件中的函数要调用c++写的接口,只需要包含这个头文件就可以了。.hpp文件:类的声明,c语言头文件的引用(要加extern "C",看图)以及用c++写的对外函数的接口的声明(要加extern "C",看图)不管不管就不管,我就要用c++开发!原创 2024-06-18 13:05:35 · 706 阅读 · 0 评论 -
将关键代码和数据段定位到特定DTCM-RAM/ITCM-RAM中【STM32F767】
首先查看用到的XXX-RAM的映射地址,其中主SRAM映射的起始地址从0x20020000开始,大小368kb,TCM-RAM起始地址0x20000000,ITCM-RAM起始地址0x00000000。具体能带来多大的优势,没有查询,但是不经过其他协议直接与CPU交流,效果应该非常好!目的:将关键数据重定位到DTCM-RAM,关键代码段重定位到ITCM-RAM中,SRAM1作为主SRAM。说明:散列文件的语法以及AC6和AC5区别自行查资料(推荐硬汉论坛,如有哪里不正确的地方,有问题可以留言交流!原创 2024-06-15 23:33:42 · 746 阅读 · 0 评论 -
史上最简单的bootloader【STM32F767】[【二】
2)没什么大用处,主要是学习---->看资料说是代码在sram中运行会快一点,本人没有测试过。那些不明白的地方,如果哪天搞明白了,会在文中更新,同时也希望有知道的大佬能留言指导下小弟!学习过程有点曲折,虽然实验现象符合预期,还是有很多不明白的地方,话多不表,开始!任务:bootloader不变,app自我复制,将app搬运到sram中运行。至此,通过app的自我复制,将代码搬运到sram中运行功能就实现了!启动文件改动的地方比较多,里面有很多不太明白的地方!散列文件改动了一点,一个一个说明!原创 2024-06-15 14:19:55 · 493 阅读 · 0 评论 -
史上最简单的bootloader【STM32F767】
首先就是外部SystemInit()(C语言实现,关于stm32内部环境初始化等等),然后再跳到__main(),__main()是运行环境(keil自带的)的初始化,然后再跳到main()(自己实现)执行。1)单片机上电开始,并不是从main()函数直接运行,而是从单片机的内核开始,经过一些初始化再跳到main()运行。1)因为不需要初始化外设,启动文件去掉了系统初始化和mdk初始化的代码,直接跳到app的入口地址,也就是mymain()4)boot工程main()函数的实现。2)app的散列文件。原创 2024-06-11 17:38:09 · 324 阅读 · 1 评论 -
STM32 TIM定时器 输出比较模式遇到的坑
按照网上的教程也能实现PWM波的输出,占空比和频率都符合预期。但是当波形时间拉长以后,就会出现ARR周期的高电平或者低电平,定位了好久。图中红框CCR的值超过ARR的值了,目前用注释掉的代码测试,现象是没了,但是长时间运行会不会有问题不确定。出现问题的原因很简单:比较寄存器超出ARR设定的值了;这两天在学习STM32 TIM定时器。此时ARR设定的值是6000。原创 2024-06-07 10:38:39 · 303 阅读 · 0 评论