随笔分类 - 03.Cortex_M
摘要:(1)stm32的I2C数据线SDA,时钟线SCL都是开楼输出,因此需要接一个上拉电阻(4.7K),开楼输出只能输出零,高电平时输出不了的;(2)
阅读全文
摘要:在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思: Code :是程序中代码所占字节大小 (不变) RO-data :程序中所
阅读全文
摘要:(一)寄存器 1 寄存器组 R0-R12: 通用寄存器 R13: 堆栈寄存器 有两个,MSP和PSP,同时只能看见一个,引用R13时,引用的是正在使用的那个 MSP:可用于异常服务和应用程序 PSP:只能用于应用程序 系统复位后,用的堆栈指针是MSP。 R14: 连接寄存器,又名LR,存储返回地址
阅读全文
摘要:(1)core_cm3.c , core_cm.h:获取设置CM3内核,配置一些内核寄存器,用到CM3核的都需要;(2)stm32f10x.h和 system_stm32f10x.c,system_stm32f10x.h 和 startup_stm32f10x_hd.s : stm32的支撑文件,这...
阅读全文
摘要:printf("\r\n this is a usart printf demo \r\n");Use Micro LIB 需要勾选这个库将串口定义成 printf 函数#include //重定向C库函数printf到USART1int fputc(int ch, FILE *f){ ...
阅读全文
摘要:1.DMA:data memory access //实际的内存存储注:DMA干活的时候是不需要CPU干涉的2.①内存(定义的变量)---外设(寄存器);②内存---内存③外设---外设(一个外设的寄存器到另一个外设的寄存器)3.STM32有两个DMA控制器如图:4.举例说明:(内存到外设,串口1 ...
阅读全文
摘要:BOOT0 和 BOOT1STM32 三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的?Flash。2)SRAM = 芯片内置的 RAM 区,就是内存啦。3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段 Bootloader,就是通常说的 IS...
阅读全文
摘要:由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行。 在论坛上看到很多用户反映,使用外接12MHz的晶振,会造成很多的问题,如USART的波特率不正确,Systi...
阅读全文
摘要:做物联网,没有以太网怎么能行!基于Enc28j60,我们团队独立实现了以太网精简协议栈TinyIP,目前支持ARP/ICMP/TCP/UDP/DHCP,还缺一个DNS就完整了。TinyIP内置一个数据缓冲区,Enc28j60收到数据以后,放入缓冲区,然后TinyIP内部开始根据Ethernet/AR...
阅读全文
摘要:GD32是国产兆易创新公司生产的完全兼容STM32系列的Cortex-M3处理器,具有几大亮点:1,高主频108MHz。性能提升30%以上,可超频到120MHz2,Flash零等待。STM32的72MHz需要两个等待,其实兆易创新公司本来就是做Flash起家的,具有gFlash专利3,采用ARM C...
阅读全文
摘要:很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link。出现这个问题时,调试软件会提示不能建立与Cortex-M3的连接,或提示不能下载程序,或提示找不到要调试的设备等。这样的问题都是发生在调试那些可以在CPU不干预的时候自...
阅读全文
摘要:Keil编译项目,如果使用微库MicroLIB,就可以使用malloc。微库内部位置一个堆管理模块。芯片的RAM大小是固定了的,前面分为全局变量,后面分给堆和栈,这是一般开发方式。但是我们在开发项目的过程中,市场遇到各种各样问题,栈穿透到堆里面,或者堆不够大,相当烦人!有时候就在想,何不让全局变量以...
阅读全文
摘要:无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2,如果栈用完,进入堆的空间,这个时候系统是不会有任何异常的,也就是说,栈底没有什么意义。除非堆和栈指针...
阅读全文
摘要:GUI_Delay()函数使用GUI_Delay()函数时,对于其延时时间不确定,明明设置为最小值1,延时时间仍旧太长,不能达到需求。遂决定研究明白其实现机理。uC/OS-II使用OSTimeDly()函数实现延时,其单位是OS_TICKS,即延时多少个系统节拍。GUI使用GUI_Delay()函数...
阅读全文
摘要:microlib与缺省C库之间的主要差异是:microlib不符合ISOC库标准。不支持某些ISO特性,并且其他特性具有的功能也较少。microlib不符合IEEE754二进制浮点算法标准。microlib进行了高度优化以使代码变得很小。无法对区域设置进行配置。缺省C区域设置是唯一可用的区域设置。不...
阅读全文
浙公网安备 33010602011771号