随笔分类 -  STM32

摘要:调用如下函数: appxaddr:跳转到flash中的地址。 1 void iap_load_app(uint32_t appxaddr) 2 { 3 __set_MSP(*(uint32_t*)appxaddr); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) 4 ((void 阅读全文
posted @ 2021-12-29 10:39 白衣尽湿 阅读(197) 评论(0) 推荐(0) 编辑
摘要:IAP-修改flash启动地址目的:将程序启动地址从0X08000000改成0X08002000,偏移8K flash地址空间。 过程:需要修改三个文件ldscript.ld stm32g031xx.h system_stm32g0xx.c。 我的工程目录路径: E:\st_code\LaserController_SW\Ard 阅读全文
posted @ 2021-12-29 10:03 白衣尽湿 阅读(225) 评论(0) 推荐(0) 编辑
摘要:#define MAX_17040_BATTERY_I2C_ADDR (0x36) 设备地址 #define MAX_17040_BATTERY_WRITE_ADDR (MAX_17040_BATTERY_I2C_ADDR << 1) 写地址 #define MAX_17040_BATTERY_RE 阅读全文
posted @ 2018-12-05 09:52 白衣尽湿 阅读(902) 评论(0) 推荐(0) 编辑
摘要:为了支持长文件名,需要用到FATFS源码中的cc936.c的两个函数ff_convert,ff_wtoupper;这里面直接用了两个大数组(127KB)来做unicode转gbk(OEM)的对照表,这两个对照表太大,太占用内部flash,所以,一般将它们做成一个.bin的文件,叫做UNIGBK.BI 阅读全文
posted @ 2018-11-19 00:17 白衣尽湿 阅读(3604) 评论(0) 推荐(0) 编辑
摘要:原文转自:http://www.cnblogs.com/mddblog/p/4920063.html 阅读目录 概述 1.堆栈空间定义 2.存放中断向量表 3. 复位中断函数(Reset_Handler) 4.其它中断异常服务函数,以及弱[WEAK]声明 5.将堆栈地址传递给库函数 原文转自:htt 阅读全文
posted @ 2018-11-18 18:02 白衣尽湿 阅读(3455) 评论(0) 推荐(0) 编辑
摘要:引入内联函数的目的是为了解决程序中函数调用的效率问题。 函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存 阅读全文
posted @ 2018-11-18 17:13 白衣尽湿 阅读(5183) 评论(0) 推荐(1) 编辑
摘要:转:https://blog.csdn.net/zuixin369/article/details/76195186?locationNum=7&fps=1 Keil MDK编译器完成编译链接后,在调试窗口会出现Code,RO,RW,ZI 四种内存分配区域,下面说明其中的意思。 Code区:代码区。 阅读全文
posted @ 2018-11-18 17:08 白衣尽湿 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:这里针对STM32F407芯片+1M外部内存的内存管理!(全篇是个人愚见,如果错误,请不吝指出!) 首先,定义3个内存池,分别是内部SRAM,外表SRAM和CCM;通过指定内存中的绝对地址,后面就可以直接通过数组操纵内存数据了。这里的mem1的大小是112KB,这里用100KB,其余12KB 用作内 阅读全文
posted @ 2018-11-18 14:51 白衣尽湿 阅读(2828) 评论(0) 推荐(1) 编辑
摘要:__attribute__( at(绝对地址) )的作用分两个,一个是绝对定位到Flash,另个一是绝对定位到RAM。 1、定位到flash中,一般用于固化的信息,如出厂设置的参数,上位机配置的参数,ID卡的ID号,flash标记等等。 2、定位到RAM中,一般用于数据量比较大的缓存,如串口的接收缓 阅读全文
posted @ 2018-11-18 13:54 白衣尽湿 阅读(1882) 评论(0) 推荐(0) 编辑
摘要:转:https://www.cnblogs.com/LittleTiger/p/4384741.html 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性。常用的加密解密算法比如DES、RSA等,受限于单片机的内存和运算速 阅读全文
posted @ 2018-11-17 23:05 白衣尽湿 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:(1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器;(2)、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变;(3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的 阅读全文
posted @ 2018-11-17 20:50 白衣尽湿 阅读(520) 评论(0) 推荐(0) 编辑
摘要:STM32 M3内核的位带操作原理及步骤 一、位带操作有什么用?什么是位带操作 位带操作的作用:可以实现对某一GPIO口寄存器(或SRAM内存中)的某一bit位直接写0或1,达到控制GPIO口输出(或改变SRAM中这一bit位的值);就如同51单片机控制GPIO口一样的方便。比如: 51:P1^0= 阅读全文
posted @ 2018-08-17 16:59 白衣尽湿 阅读(7888) 评论(0) 推荐(1) 编辑
摘要:1、点阵组成OLED,OLED中有一个GRAM区域,区域中的值直接刷新到屏幕上,对应关系是1bit对应一个像素点; 2、要点亮一个像素点,只需要将GRAM中的对应bit位写1即可。GRAM中是分页来管理的,128*64分辨率的OLED,一页128个字节,共8页,总共128*64个bit位;第一页的像 阅读全文
posted @ 2018-08-14 16:01 白衣尽湿 阅读(603) 评论(0) 推荐(0) 编辑
摘要:关于SPI的通信: SPI采用的是主从模式的同步通信,通过时钟来控制;一般情况下,使用双向全双工,收发的数据放在缓冲器FIFO中。数据的传输是主SPI的时钟在控制,从机是不能产生时钟的,如果没有时钟,就没有数据的传输,即从设备不能主动和主设备通信。 如果要发送数据,直接给数据寄存器DR中写值,DR寄 阅读全文
posted @ 2018-08-12 21:15 白衣尽湿 阅读(381) 评论(1) 推荐(0) 编辑
摘要:在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义; 在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 举例说明: assert_par 阅读全文
posted @ 2018-08-07 11:04 白衣尽湿 阅读(39063) 评论(0) 推荐(4) 编辑
摘要:core_cm4_simd.h文件用于simd指令,即单指令多数据流,这个只有ARMv7架构才有,Cortex m3 m4 m7是ARMv7架构,而Cortex m0 m1是没有的。 所以,在新建Cortex m0单片机的工程时,不需要添加simd的头文件。 阅读全文
posted @ 2018-07-27 17:09 白衣尽湿 阅读(1980) 评论(0) 推荐(0) 编辑
摘要:个人理解: FSMC相当于外部设备存储器地址在FSMC对应存储地址中的映射,通过在FSMC的存储地址中写数据,就能通过FSMC的地址线和数据线,将地址和数据写到外部设备存储器地址中。所以,程序中,需要在设备存储地址中写数据,一般是定义一个变量,变量的指定地址为FSMC中的地址,而不是内存中的地址,这 阅读全文
posted @ 2018-07-25 20:55 白衣尽湿 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:数据建立时间和保持时间: 在理想情况下,只要在时钟沿来临时,有效数据也来临(时钟沿之前或同时),则能够正确采集到数据;而在时钟沿之后(或同时),即使数据发生变化,也不会影响DFF的输出了。然而在实际中,上升沿打开开关需要时间,逻辑门的状态改变(电容充放电等)都需要时间,因此数据的采集是需要一定时间的 阅读全文
posted @ 2018-07-21 10:52 白衣尽湿 阅读(1091) 评论(0) 推荐(0) 编辑
摘要:OSTimeGet() 获得系统节拍值OSTime,滴答定时器中断一次OSTime++。 阅读全文
posted @ 2018-04-19 16:19 白衣尽湿 阅读(3664) 评论(0) 推荐(0) 编辑
摘要:PWM一共有两种模式,PWM1模式:CNT<CRRx为有效电平。CNT>CRRx为无效电平。PWM2模式相反。 有限电平通过设置极性来确定: TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;表示有效电平是高电平。 设置初始PWM占空比 阅读全文
posted @ 2018-04-19 14:56 白衣尽湿 阅读(3076) 评论(0) 推荐(0) 编辑