
STM32
mail-mail
路漫漫其修远兮,吾将上下而求索。
展开
-
免费公网测试
http://tcplab.openluat.com/原创 2020-07-23 16:25:50 · 3084 阅读 · 0 评论 -
stm32f429 利用stm32cube配置FMC接口
目录一、为什么使用SDRAM二、SDRAM芯片W9825G6KH三、stm32f4的fmc接口四、stm32cubemx配置fmc五、实验现象:六、源码:七、注意事项:八、参考记录:硬件平台:正点原子阿波罗stm32f429一、为什么使用SDRAMSTM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间...原创 2020-04-09 14:10:23 · 9168 阅读 · 2 评论 -
stm32f429一些新的知识点
一、stm32f429的SRAMstm32f429自带256K字节的SRAM.SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以...原创 2020-03-25 11:08:50 · 2655 阅读 · 0 评论 -
STM32 利用Ymodem协议进行程序更新
一、Ymodem协议介绍 YModem协议是由XModem协议演变而来的,每包数据可以达到1024字节,是一个非常高效的文件传输协议。下面有一些相关的文档。 下面先看下YModem协议传输的完整的握手过程:先看下图SENDER:发送方。RECEIVER:接收方。第一步先由接收方,发送一个字符'C'发送方收到'C'后,发送第一帧数据包,内容如下:S...原创 2019-10-28 14:54:01 · 2224 阅读 · 0 评论 -
CRC校验 适用于modbus
u16 CRCCheck(u8 *buf,u16 count){ u16 crc = 0xFFFF; u16 i,j; for (i =0; i < count; i++) { crc=crc^buf[i]; for (j = 1; j <= 8; j++) { if ((crc & 0x0001) == 1) ...原创 2018-03-26 16:00:14 · 412 阅读 · 0 评论 -
stm32 定时器3产生指定数量的脉冲
一、场景描述:利用PB5产生一定数量的脉冲信号。PB5是定时器3的第2通道。二、产生PWM代码:void Timer3_Configuration(void ){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit(TIM3); // Æ...原创 2018-03-29 15:29:28 · 7947 阅读 · 1 评论 -
stm32 的定时器4产生PWM
利用PB9产生PWM信号一、引脚初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_Ini...原创 2018-03-29 16:12:36 · 5783 阅读 · 0 评论 -
stm32计算编译完的程序的大小及数据存储起始位置判断
一、keil编译完后会产生以下数据:其中,code代表可执行代码,程序中定义的所有函数都位于此处;RO-data代表可读数据,程序中所有的全局常量数据和字符都位于此处;RW-data代表已经初始化的读写数据,程序中所有定义并且初始化的全局变量和静态变量均位于此处;ZI-data代表未初始化的读写数据,程序中定义了但是没有初始化的全局变量和静态变量位于此处;二、在map文件的最后可以看到如下数据从这...原创 2018-05-18 16:07:39 · 6798 阅读 · 0 评论 -
STM32再学习——启动流程分析
[导读] 我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程 我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main...转载 2018-05-18 17:14:13 · 318 阅读 · 0 评论 -
stm32使用swd下载的必备操作
1、一般stm32都会使用swd方式进行下载,因为节省引脚。2、那么不管是否用到了JTAG引脚。最好的方式就是首先把jtag禁掉,以免自己操纵某个引脚时,发现引脚始终不能按照设计进行拉高或者拉低操作。3、禁掉jtag方式:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 4、可以把这段代码放在gpio初始化中。...原创 2018-04-29 11:42:36 · 7230 阅读 · 0 评论 -
STM32使用串口的必备操作
从图中可以看出,这两个引脚主功能是用来做普通的io口,复用模式下用作串口1.所以,上电初始化的时候必须开启复用功能时钟。RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);...原创 2018-05-14 16:58:07 · 505 阅读 · 0 评论 -
STM32独立看门狗IWDG的使用
一、定义按照STM32参考手册的说法:“独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。” 简单的说,STM32 中的IWDG 其核心就是一个12bits的向下递减的计数器,当计数器计数...原创 2018-07-18 09:49:23 · 2461 阅读 · 0 评论 -
详解STM32编译后Code-RO-data-RW-data-ZI-data
keil编译后会有一行:Program Size:Code=xxxRO-data=xxxRW-data=xxx ZI-data=xxxCode 代表执行的代码,程序中所有的函数都位于此处。RO-data 代表只读数据,程序中所定义的全局常量数据和字符串都位于此处。RW-data 代表已初始化的读写数据,程序中定义并且初始化的全局变量和静态变量位于此处。RO是程序中的原创 2018-02-06 10:11:24 · 2480 阅读 · 0 评论 -
stm32外部时钟为12M时怎么办?
由于stm32的库默认是外部晶振8M的情况下实现的,所以配置波特率的时候也是按8M,包括主频,如果用12M晶振就需要改动几个地方: 1)72M主频: 8M时: RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9); 12M: RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE |原创 2017-05-23 09:27:28 · 1835 阅读 · 0 评论 -
ADC采集那些事
一、提出问题: 假设有一个需求,那就是需要对输入频率为100HZ的PWM信号进行采样,该PWM信号控制某一个器件进行电流输出。求平均电流。二、分析问题。 1、频率为100hz,那周期就是10ms。 2、假设在单周期内需要采集100个点,每两个点间的采样间隔是t1=0.1ms.就是采样率做到10k。 3、假设同时有八个通道需要进行采样。 4、stm32的采样周期假设选择239.5T,转换时间原创 2017-10-24 09:47:14 · 3205 阅读 · 1 评论 -
Mac与Phy组成原理的简单分析
网口扫盲二:Mac与Phy组成原理的简单分析转载 2017-03-03 11:34:17 · 495 阅读 · 0 评论 -
LWip1.4.1移植到STM32平台的步骤
一、从官网下载lwip1.4.1压缩包 下载链接: http://savannah.nongnu.org/projects/lwip/ 二、解压缩 其中src为lwip的源文件 三、新建工程 keil工程如下:将lwip中的代码依次添加到工程中去。此时源代码已经添加完毕,需要在include文件夹中添加arch文件夹。 再添加lwipopts.h文件。 最后,将原创 2017-06-19 11:28:18 · 13704 阅读 · 3 评论 -
LWIP的DHCP验证
一、配置DHCP功能void LwIP_Init( void ){ struct ip_addr ipaddr; struct ip_addr netmask; struct ip_addr gw; lwip_init(); #if LWIP_DHCP // ipaddr.addr = 0; netmask.add原创 2017-06-20 14:09:39 · 2287 阅读 · 0 评论 -
CRC算法
一、CRC-16校验码计算方法:常用查表法和计算法。计算方法一般都是: (1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器; (2)、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器,高八位数据不变; (3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位; (4)、原创 2017-06-20 14:35:15 · 613 阅读 · 0 评论 -
lwip之回调函数
一、什么是回调函数 总结一下就一句话:回调函数就是函数指针的一种用法。 二、回调函数示例#include <stdio.h>void printWelcome(int len){ printf("欢迎欢迎 -- %d\n", len);}void printGoodbye(int len){ printf("送客送客 -- %d\n", len);}void原创 2017-06-21 16:17:56 · 1575 阅读 · 0 评论 -
stm32如何获取自己的ID号
一、函数。void STM32_GetChipID(unsigned int *cID){ cID[0]=*(vu32*)(0x1ffff7e8); cID[1]=*(vu32*)(0x1ffff7ec); cID[2]=*(vu32*)(0x1ffff7f0);`}二、可以用串口打印出来。Printf( "\r\nChip ID: %d, %d, %d\r\n", cID原创 2017-07-19 13:33:52 · 3529 阅读 · 2 评论 -
.\output\stm32f103.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from mqtt.o).
“MicroLib并不支援assert(),所以才会出现错误讯息”,原来原工程使用了微库,在target中钩掉USE MicroLIB编译就可以通过了。原创 2017-07-26 16:27:05 · 12498 阅读 · 5 评论 -
常用工具集锦
1、文本比较工具 beyond compare. 2、快速搜索工具Everything。原创 2017-07-27 14:54:31 · 252 阅读 · 0 评论 -
如何进行字符串解析,并打印需要的字符串
一、应用场景。 需要进行字符解析的场景一般是走AT指令集的,比如GPS模块,GPRS模块,WIFI模块。下面给出一个WIFI模块接收到的数据包:+IPD,260:{"results":[{"location":{"id":"WTTE97PU94T9","name":"Wuxi","country":"CN","path":"Wuxi,Wuxi,Jiangsu,China","timezone":"原创 2017-08-07 13:33:27 · 1188 阅读 · 0 评论 -
4-20mA传感器的由来
工业上普通使用的压力传感器输出值都是4-20mA的、这是常规的传感器输出数值、但为什么会是4-20mA而不是其它的数值输出呢? 众所周知:采用电流信号的原因是不容易受干扰、并且电流源内阻无穷大,导线电阻串联在回路中不影响精度,在普通双绞线上可以传输数百米。 上限取20mA是因为防爆的要求:20mA的电流通断引起的火花能量不足以 引燃瓦斯。下限没有取0mA的原因是为了能检测断线:正常工作时不会低于4原创 2017-10-23 10:18:42 · 3610 阅读 · 0 评论