STM32F407ZGT6芯片,想操作读写FLASH,如何做。对FLASH写操作,是不是要先擦除;擦除的话,是必须擦一个Sector块,还是可以只擦除一页Page;往一个地址写,是一下子写一个字(4个字节)、半字(2个字节),还是1个字节的?读取呢,是可以1个字节1个字节读,还是一下子读出4个字节?
STM32F407 UDP 单片机板子与上位机进行通信。重启上位机之后,出现网络初始化失败,可能是哪里的问题
使用探索者开发板上自带的LWIP作为服务器端,可以实现和台式机上网络调试助手的通信,另一个网口使用w5500,但是这两个只有一个能通信,要么w5500通信正常,要么LWIP这个网口通信正常,这两个网口连接的电脑都能ping通,但是其中一个电脑上的网络调试助手无法连接上。
如题所示,我的stm32单片机在执行完AliIoT_HTTPsend(); 程序之后,应该向下执行 time_sta = 5; u1_printf("time_sta的值:%d\r\n"time_sta); u1_printf("发送了数据\r\n");但是通过串口发现,并没有执行,而是一直停在AliIoT_HTTPsend();这里,来回重启之后,还是卡在这里不动,请问如何解决。是什么问题? void AliIoT_HTTPsend(void) { char temp[128]; memset(TXbuff02048); sprintf(&TXbuff[2]"POST /topic%s HTTP/1.1\r\n"HTTP_TOPIC_NAME); memset(temp0128); sprintf(temp"Host:%s\r\n"ServerName); strcat(&TXbuff[2]temp); memset(temp0128); sprintf(temp"password:%s\r\n"Authtoken); strcat(&TXbuff[2]temp); strcat(&TXbuff[2]"Content-Type: application/octet-stream\r\n"); memset(temp0128); sprintf(temp"Content-Length: %d\r\n"Postdata_len); strcat(&TXbuff[2]temp); strcat(&TXbuff[2]"Connection: keep-alive\r\n\r\n"); strcat(&TXbuff[2]Postdata); TXbuff[0] = strlen(&TXbuff[2])/256; TXbuff[1] = strlen(&TXbuff[2])%256; W5500_TxData((unsigned char *)TXbuff); } AliIoT_HTTPsend();一直执行到底,W5500_TxData();执行完成后,出现了“发送数据成功,等待接收... ...”,这表明了W5500_TxData执行完成,但是就是不返回main函数,不向下执行 time_sta = 5; u1_printf("time_sta的值:%d\r\n"time_sta); u1_printf("发送了数据\r\n");很惆怅,不知道什么情况,求解答?
我自写的过的一些程序,编译时出现这样的 问题。我想这时吧ESP8266系类的程序移植到STM32 中 实现一种同样功能,但是还是失败了
QQ截图20201123112548.png (26.78 KB 下载次数: 0) 下载附件 昨天 11:26 上传 在IIC实验中的等待应答型号的函数中,在1出把SDA设置成输入模式,紧接着在2处将SDA输出高电平。 请问为什么要这样做呢,还有就是SDA已经先配置成输入模式,还能输出高电平吗?
想用绑定芯片,那么芯片开发需要自己设计吗,之前用的51单片机实现,现在需要用绑定芯片,那么需要做哪些流程才可以替换成绑定芯片
HAL库的回调函数怎么理解,是不是外设中断配置了,触发中断就会 进入回调函数。回调函数里适合用来处理通信转发、数据处理吗。可以不用回调函数吗?
请问STM32H750与STM32H743VI可以pin-to-pin换用吗?
正负14v供电,测量输入负是0v,输入正是-14v,这个时候理论上输出是-13v到-14v,但是实际输出是+13到14v之间,但是把输入负改到-10v左右就能使输出变成负压,为什么运放会有这种现象,芯片是没坏的,换新都一样
pt100通过op07给单片机提供0-5v电压测温度-5度到125度,单片机读的op07送过来的电压值怎么计算成实际温度值 感谢
应用: STM32F405, 串口使用DMA接收,接收数据大小不定, 问题:我通过上位机给STM发送数据(数据大小不定,小于256),第一次发送时,接收正常 之后再发送时,能够进入串口中断,但没有数据,读到的dma_cnt一直是256,这个可能的原因是什么呢? 主要程序如下: RECVBUFF_SIZE=256 void Debug_USART_Config(void) { NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=DEBUG_PREE_PRIO; NVIC_InitStructure.NVIC_IRQChannelSubPriority = DEBUG_SUB_PRIO; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); USART_Init(DEBUG_USART &USART_InitStructure); USART_ITConfig(DEBUG_USART USART_IT_IDLE ENABLE); USART_DMACmd(DEBUG_USARTUSART_DMAReq_RxENABLE); USART_Cmd(DEBUG_USART ENABLE); DMA_DeInit(DEBUG_USART_DMA_STREAM); while (DMA_GetCmdStatus(DEBUG_USART_DMA_STREAM) != DISABLE){} DMA_InitStructure.DMA_Channel = DEBUG_USART_DMA_CHANNEL; DMA_InitStructure.DMA_PeripheralbaseAddr = DEBUG_USART_DR_base; DMA_InitStructure.DMA_Memory0baseAddr = (u32)RecvBuff; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = RECVBUFF_SIZE; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_Init(DEBUG_USART_DMA_STREAM &DMA_InitStructure); DMA_Cmd(DEBUG_USART_DMA_STREAM ENABLE); while (DMA_GetCmdStatus(DEBUG_USART_DMA_STREAM) != ENABLE){} } void USART1_IRQHandler(void) { uint16_t dma_cnt; if(USART_GetITStatus(DEBUG_USART USART_IT_IDLE) != RESET) { USART_ReceiveData(DEBUG_USART); dma_cnt = DMA_GetCurrDataCounter(DEBUG_USART_DMA_STREAM); uart1_rev_len =RECVBUFF_SIZE-dma_cnt; if(uart1_rev_len != 0) { uart_parse(RecvBuff); hw_memset(RecvBuff0sizeof(RecvBuff)); } USART_ClearITPendingBit(DEBUG_USARTUSART_IT_IDLE); DMA_Cmd(DEBUG_USART_DMA_STREAM DISABLE ); while (DMA_GetCmdStatus(DEBUG_USART_DMA_STREAM) != DISABLE){} DMA_SetCurrDataCounter(DEBUG_USART_DMA_STREAMRECVBUFF_SIZE); DMA_Cmd(DEBUG_USART_DMA_STREAM ENABLE); } } uart_parse(RecvBuff)是解析收到的数据, 另外如果串口中断最后,加while (DMA_GetCmdStatus(DEBUG_USART_DMA_STREAM) != ENABLE){}的话 程序会卡死在while循环里