自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 CLion终端输出中文,乱码解决方法

tips:大概率输出还是乱码。

2024-12-17 16:04:21 759

原创 [STM32][F7/H7]stm32单片机官网下载资料

写这篇blog的初衷是当初移植【threadx】 + 【filex】+ 【netx】驱动的时候,老编译不过去……对比了好久才发现【安富莱】相关例程用的库跟自己用的库有点差别!于是就想着到ST官网找最新的固件库,参考官网历程移植!写下此博文给需要的同学参考下,也当做一个笔记,自己需要的时候不用搜索了!/***************未完,待续*****************/】,要找到正规的官网【国内的搜索引擎一言难尽】,如下图【可能有所不一样】mac os 截图太难操作了,后续用win补充下。

2024-11-23 22:52:15 243

原创 [STM32][F767]对cahe的个人理解

Cache:是一种高速、小容量的存储器,用于临时存储频繁访问的数据和指令,以加速访问。:STM32F7 系列微控制器配备了 L1 Cache,包括 ICache 和 DCache。配置:可以通过 HAL 库或直接操作寄存器来使能、禁用、刷新和清空 Cache。优点:提高性能和降低功耗。缺点:增加系统复杂性和数据一致性问题.2 Cache 脏数据的概念脏数据:在 Cache 中,已经被修改但尚未写回到主内存中的数据。产生:通过写操作产生,根据写回策略决定何时写回主内存。管理。

2024-11-23 18:12:29 841

原创 [STM32][F767]寄存器实现外部中断输入--控制GPIO点灯

1)本次实验只是实现功能,实际应用中需要对机械按键做消抖处理;1 查看原理图,确定按键对应的IO----GPIOH.3。2)GPIOH.3引脚映射到EXTI3中断线需要用到。实验目的:寄存器实现EXTI中断,控制LED亮灭;实验环境:参考上一篇【

2024-11-21 20:12:04 342

原创 [STM32][F767]寄存器控制GPIO点灯

下图可以看到开启GPIOB的时钟的寄存器相对于RCC基地址偏移量 0x30 ,也就说寄存器地址是(0x40023800+0x30);之前做的项目都是用HAL库或者厂家已经封装好的库,没有很底层的实现过相关功能。原理图上确定驱动LED的引脚,本人用的是LED1----->GPIOB-0引脚;下图可以看到,GPIOB是挂载AHBI总线上的;可以参考RCC确定相应寄存器地址(基地址+偏移);上图可以看到,RCC寄存器基地址0x40023800;主函数调用gpio_ini就可以观察到实验现象!

2024-11-21 13:48:36 255

原创 [STM32][F767]自动初始化

前面学习Linux驱动的时候,就是按照rt thread的驱动框架去理解linux的驱动框架!好久没用rt thread了(也只是用,像一些很巧妙的设计也没很仔细深究),前段时间在研究threadx全家桶,(usb真的难啊,还没搞定)遇到一些问题,不想继续了,趁此机会研究下rtthread的自动初始化原理。1)代码重定位(其实这里是函数指针重定位,再次说明下,免得大家有困扰):涉及到gcc编译工具链下的内存脚本,在text 段(可以叫程序段)中添加(具体用法可以百度下,现阶段都是仿照着写);

2024-11-02 11:32:34 411

原创 GCC编译器,链接器对定义在头文件里面的内联函数报未定义错误

第一次遇到这种编译问题,当作笔记记录下来,也给遇到同样问题的同学参考下!现象:链接器对定义在头文件里面的内联函数报未定义错误;2)在inline 关键字前面加上static关键字。1)将编译等级调整到(o2)

2024-11-01 14:32:53 225

原创 [STM32][F767]使用DWT模块实现精确延时

在做项目的时候,驱动有时会用到us级别的延时比如软件模拟i2c、DS18B20驱动等 ,使用定时器可以实现,但是需要频繁进入中断,在RTOS环境下会影响实时性。ARM M3内核及更高级内核都会自带一个DWT模块,具体有作用可自行问度娘!在网上找到有人提到这个问题,缺少解锁 dbg regs(DWT->LAR = 0xC5ACCE55)(a.先使能DWT外设,由内核调试寄存器DEM_CR的位24控制,写1使能。c.使能CYCCNT寄存器,由DWT_CTRL的位0控制,写1使能。),试一下果然解决了;

2024-10-28 11:35:52 469

原创 [stm32][cubeIDE]关键代码放到指定sRAM中执行

注: __attribute__((section( ))) 里面不要写段名,应该写代码链接到的段,比如.key_code 段里面的 keycode 段,例:__attribute__((section(".keycode")))4)我们用 __attribute__((section( )))关键字将我们的代码链接到.keycode段中,只需要在代码前面加上__attribute__((section(".keycode")))即可,完毕!趁着现在有点空闲时间,更新下自己学到的东西---------

2024-10-24 13:58:54 841

原创 【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 901

原创 将关键代码和数据段定位到特定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 1068

原创 史上最简单的bootloader【STM32F767】[【二】

2)没什么大用处,主要是学习---->看资料说是代码在sram中运行会快一点,本人没有测试过。那些不明白的地方,如果哪天搞明白了,会在文中更新,同时也希望有知道的大佬能留言指导下小弟!学习过程有点曲折,虽然实验现象符合预期,还是有很多不明白的地方,话多不表,开始!任务:bootloader不变,app自我复制,将app搬运到sram中运行。至此,通过app的自我复制,将代码搬运到sram中运行功能就实现了!启动文件改动的地方比较多,里面有很多不太明白的地方!散列文件改动了一点,一个一个说明!

2024-06-15 14:19:55 596

原创 史上最简单的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 472 1

原创 stm32cubemx 配置使用sdram

后来查资料,是因为用stm32cubemx配置(stm32f767)默认开启了内存保护模式模式,于是就尝试把内存保护模式关闭,果然能正常使用了!今天突发奇想,将代码搬运到外挂的SDRAM运行!查了各种资料,确定是可以的!但是要先把SDRAM调试好,再想下一步!配置好以后,代码出问题了,debug的时候,发现进入里面。2 在SDRAM配置里面,写保护也要关掉,其他参数按照自己的配置和SDRAM参数填进去就行了。其中2号框可打开可不打开,还没研究有什么影响,但是我测试了,SDRAM都是可以正常用的。

2024-06-09 00:17:55 509 3

原创 STM32 TIM定时器 输出比较模式遇到的坑

按照网上的教程也能实现PWM波的输出,占空比和频率都符合预期。但是当波形时间拉长以后,就会出现ARR周期的高电平或者低电平,定位了好久。图中红框CCR的值超过ARR的值了,目前用注释掉的代码测试,现象是没了,但是长时间运行会不会有问题不确定。出现问题的原因很简单:比较寄存器超出ARR设定的值了;这两天在学习STM32 TIM定时器。此时ARR设定的值是6000。

2024-06-07 10:38:39 416

原创 学习设备树插件遇到的坑

野火和讯为两家的资料都没提到这些,希望两家相关工作人员看到此篇博客在自家资料里面,关于设备树插件命名规则添加说明(注意事项)。有被坑到,耽误了将近2消失,希望对遇到的同学有用!我自己的命名格式xxx.dts,也就是说需要在设备树插件文件名加上-overlay,比如myled-overlay.dts。编译结果出现:needed by '__build'. Stop.设备树插件名称格式 xxx-overlay.dts。

2024-04-20 22:33:03 291

原创 记录编译arm-Linux内核编译时遇到的坑 -> multiple definition of ‘yylloc‘

两个方法都用了,scripts/dtc/dtc-lexer-lex.c中(原)YYLTYPE yylloc,修改成extern YYLTYPE yylloc,编译时extern YYLTYPE yylloc又会变成scripts/dtc/dtc-lexer-lex.c。既然改不了scripts/dtc/dtc-lexer-lex.c的YYLTYPE yylloc,就把其他文件中的YYLTYPE yylloc 修改成extern YYLTYPE yylloc,顺利编译通过。

2024-04-19 08:51:56 505

STM32F767寄存器实现外部中断输入-控制GPIO点灯

[STM32][F767]寄存器实现外部中断输入--控制GPIO点灯

2024-11-21

threadx操作系统filex文件系统最新源码

threadx操作系统filex文件系统最新源码

2024-10-30

netxduo最新源码

netxduo最新源码

2024-10-25

threadx-6.4.1 源码

threadx-6.4.1 源码

2024-10-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除