项目日志:Day13 --- 2020.8.5

任务更新:

1. 屏与单片机的数据读取接收问题;
2. 动态曲线坐标轴的绘制;
3. 批量烧录问题(长远问题);


上午

串口返回值接受不到,只能接收到一个帧头;
为什么单片机和屏不通呢;
代码没有问题,但用单片机发送数据给屏的话并不显示;
用另一个搭载STM32芯片的电路板却可以实现通讯;
莫非是芯片的问题;
所用的串口驱动是不同的;

神奇的事情;
直接试了一下仿真,结果代码跑了,屏幕上也显示了;
那为什么直接将程序拷进去时它不跑呢;
就离谱;
网上说是因为没有勾选下载后运行,所以要按复位Reset

下午

调试数据接收;
改动中断函数为:

u16 back[6];	//预设为6个字;
int i;
void USART1_IRQHandler(void) //串口1中断服务程序
{
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
	OSIntEnter();
#endif
	for(i = 0; i < 6; i++) {
	    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)) {
	        back[i] = USART_ReceiveData(USART1);
	    }
	}
}

但是没有数据返回;
想要测试一下寄存器状态改变的次数,加个state,初置为0;
改语句为:

u16 back[6];	//预设为6个字;
int i;
int state;
void USART1_IRQHandler(void) //串口1中断服务程序
{
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
	OSIntEnter();
#endif
	state = 0;
	for(i = 0; i < 6; i++) {
	    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)) {
	    	state++;
	        back[i] = USART_ReceiveData(USART1);
	    }
	}
}

仿真state1
说明可能数据只寄了一次,但没收完全;

查找资料,其实是每发送一个字节数据产生一次中断,而不是在一个中断里读所有字节;
这也就是为什么state总为1
问题解决;
明天贴自己的代码;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值