STM32的标准库,跟HAL库都是很实用的, 在使用SPI库的过程中一定要注意时序的问题. 我在调试SPI过程中,调试了两个IC,都是用HAL库, 第一个IC没出问题,第二个IC出现了第一次发送数据不成功问题, 不管发什么数据,交互结果都是0x00, 我一开始用的是HAL_SPI_TransmitReceive(): 这个函数,一直无法成功,改用标准库结果也是一样: 后来查到可能是收发太快的原因, 这里说的收发太快并不是说两个数据之间,而是一个交互的时候收发太快: 于是我把它改为发送接收之间加个…
stm32用printf函数重定向到串口USART1发现第一个字符没打印出来具体如下: 刚开始修改fputc函数如下: int fputc(int ch,FILE *f){USART_SendData(USART1,(uint8_t)ch):while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);return(ch);} 然后其他外设配置好之后直接使用printf(“abc");发现a打印不出来,具体原因为stm32的usart的sr寄存…
问题 上一个项目在用寄存器操作STM32F0芯片的SPI_DR寄存器的时候,发现一个问题: 我给DR寄存器赋值一个uint8_t一字节大小的数据,SPI引脚能正确输出数据和时钟,但前面八位正确的数据输出完成后,时钟CLK没有停下来,又紧接着输出了八个时钟脉冲 也就是原数据0xfe 变成了十六位的 0xfe00 , 导致时序错误,使用逻辑分析才得以检查出来 为什么 去国外的st论坛转了一圈,发现有几个老外也是遇到了相同的问题,但他们是使用正确的固件库函数解决的,这并不是我想要找到的寄存器解决方法…
http://blog.csdn.net/kevinhg/article/details/40991655 STM32串口发送必须先检测状态,否则第一个字节无法发出,发送完毕,必须检测发送状态是否完成,否则,发送不成功,使用stm32f10x调试串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据0x01 0x02 0x03 0x04..接收端收到的数据为:0x02 0x03 0x04,第一个数据丢失.换成发送别的数值的数据,如0x06 0x0ff,则接收到0x0ff,0x06丢失.错…
TCP报文段首部格式 大部分TCP报文头部都是20个字节,有的数据包要加上选项. 上面一行代表4个字节,源端口和目的端口都是2个字节. TCP协议是面向字节流的协议 TCP是一段一段分块的发送数据的 序号指的就是你当前分段的数据块的第一个字节在整个文件中的位置,就是对应的序号.对端收到数据之后,按照序号的从小到大重新组装起来,得到的就是我们要发送的文件.所以TCP是面向字节流的协议. 确认号: 如果被叫收到了序号是1的数据段,该数据段的长度是4个字节,最后一个字节的是4,那么下次我想收到的数据段…
SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信协议,STM32也就有了SPI接口. 有上图可知有四个通信口,两个位移寄存器是同步的,那MISO和MOSI就不难理解了. SCLK时钟信号,由主设备产生.CS从设备片选信号,由主设备控制. 1.配置相关引脚的复用功能,使能SPI2时钟. 假设我们要使用SPI2,第一步SPI2时钟使能,第二步相关引脚的输出模式(MISO,MOSI,SCLK…
目录 FLASH简介 W25Q64 W25Q64简介 FLASH控制指令 FLASH内部存储结构 代码讲解 读取芯片ID 发送写使能信号 等待FLASH不忙 擦除扇区 写入数据 读取数据 注 FLASH简介 FLASH俗称闪存,和EEPROM一样,都是掉电数据不丢失的非易失行存储器,但FLASH的存储容量普遍大于EEPROM,现在像如U盘.SD卡.SSD固态硬盘以及STM32芯片内部存储程序的设备都是FLASH类型的存储器.由此可见FLASH对于我们学习和工作的重要性,EEPROM可以实现单字节…
今天这篇文章是要修改之前的一个错误,前面我写过一篇基于FPGA的串口发送图片数据至VGA显示的文章,最后是显示成功了,但是显示的效果图,看起来确实灰度图,当时我默认我使用的MATLAB代码将图片数据转化后是灰度图片,直到前一阵我才发现,其实并不是这样.MATLAB代码转化出来的图片数据就是8位的彩色图片数据,只不过当数据小于16'h10时,MATLAB生成的数据便是A.B.E,但是串口调试助手会怎么识别呢!如下图(前方多图高能) 这是我发送的十六进制为0的数据,而串口却显示发送的是FF,显然数据…
这里我们来探讨一下在网络编程过程中,有关read/write 或者send/recv的使用细节.这里有关常用的阻塞/非阻塞的解释在网上有很多很好的例子,这里就不说了,还有errno ==EAGAIN 异常等等.首先我们拿一个简单的实例代码看一下. read/write面临的是什么问题: 字节流套接字上调用read或write的返回值可能比请求的数量少,这并不是出错的状态,这种情况发生在内核中的用于套接字缓冲区的空间已经达到了极限,需要再次的调用read/write函数才能将剩余数据读出或写入.那…
参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类     一.登录 登录过程中主要用到标红的3个请求,以及响应回来的几个js文件 var Login = new Object(); var page={ DE_FROM: "dashboard.jsp?tag=fromOther&menuId=dashmenu_formSubmission&topId=form_de&in…