请确保你电脑上的串口工作正常,测试方法,打开一个串口调试助手,短接串口线的TX和RX,然后串口调试助手发送一个字符,比如a,如果串口通信正常,你能在串口调试助手中收到a
请确保STM32上用于ISP的串口是串口1,IO是PA9,PA10,如果是STM32F2XX,也可以是串口3
请确保STM32在上电时两个BOOT引脚的电平正确(BOOT0=1,BOOT1=0貌似,看手册)
如以上条件满足,还是无法ISP,请调整串口波特率,比如9600,无校验
试一下:
while(1)
{
USART1->DR=0x12;
while(USART1->SR&0X40==0);
delay_ms(100);
USART1->DR=0x34;
while(USART1->SR&0X40==0);
}
如果这样可以的话,说明在 USART1->DR=0x12之前,USART1->SR&0X40==0有问题,可能一直是true。
注意初始化是否正确!没有进入中断应注意中断使能位是否已经配置还,如果是根据别的代码修改的话还要注意:
1、GPIO口时钟的使能和GPIO口模式的配置。
2、USART模块时钟的使能。
3、NVIC中断通道和优先级相关的配置!!!
能发送数据说明1、2应该是没问题的吧,如果第3点没有注意到的话是不会发生中断!!!
肯定了,你要发完后查询下发送完标志,
就是在
USART_SendData(USART1,str);//这后面加上下面判断
while(USART_GetFlagStatus(USART1, USART_FLAG_TC));//等待发送完才可以发下一个,不然会被冲掉的。
str++;
PC机经串口把文件过来,再由STM32用串口接收,接收到之后再写入STM32内部的Flash?
这样的话首先就是数据写入Flash问题,一般过程是:Flash解锁->Flash擦除->Flash写入->Flash上锁,这些都可以使用库函数来完成(在STM32F10x_flashc文件里面,针对STM32F10x系列的产品),关于Flash的读写 *** 作代码网上一大堆;在一个就是串口接收的问题,有三种方法:
1、在PC机上使用普通的串口工具(一般的串口工具都支持文件传送功能),将波特率调至最低,2400到9600那样吧,然后发送文件,STM32这边接收,接收到2个字节数据就写入Flash。将波特率调低的目的是使STM32有足够的时间将数据写入Flash。
2、使用串口通信协议传输文件(如XModem,YModem,ZModem等),一般使用ZModem吧,因为比较简单,但前提是是必须要完全了解这个协议,支持这些协议传输的工具:XP系统的超级终端、SecureCRT软件等;然后你还要在STM32这边针对ZModem协议编写串口接收的程序。
3、首先在PC机这边要会串口编程,用C、C++、Java语言都好,VC++、QT开发工具都好,反正就是你自己能编程控制串口和文件的读写 *** 作就行,然后可以怎么方便怎么打开读取文件,再通过串口传输到STM32中。
以上就是关于stm32串口发送中文再回复其他文字的程序怎么编写全部的内容,包括:stm32串口发送中文再回复其他文字的程序怎么编写、STM32串口发送的问题、STM32串口通讯程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)