评论
所有者
您好, USART_NUM 旨在轻松打开/关闭 usart 接口并在仅使用 1 个接口时节省 RAM。 |
作者
感谢您的回答。 仍在努力寻找原因,当它在第一个 ‘s’ 字符上收到 S10000 时遇到了问题。 USART_NUM 确实明白。提到的原因,因为如果使用 1 个端口 (USART1) 是这样吗?您至少实现了 2 个端口,主要是 1 个用于 Protocol_MainLoop。 TQVM。 |
作者
我找到了原因,它是由 SysTick_Handler CONTROL_FEED_HOLD_BIT 触发的。 TQVM。 |
你好,
我曾尝试使用带有 stm32f407zgt 和 stm32f407igt 的 Atollic 来编写您的代码
(两者都是中国),我得到了 2 个不同的结果。我只是在不
连接任何硬件的情况下测试代码——步进器、开关等。
a) 407ZGT 它工作——幸运的是它。
b) 407IGT 它工作但它停止了点击从 Candle2.0 解锁
– 当板开始时,在蜡烛上它得到错误:未知或错误:9
– 当蜡烛发送 $X 并收到 OK
– 跟随蜡烛发送主轴速度S10000 但未收到 OK
并在此处停止。
顺便说一句,我建议当 USART_NUM = 1 时,stm32f4xx_it.c 下的代码,
添加这个检查,它可以在没有任何更改的情况下工作……就像
运行它时一样,想知道为什么蜡烛不显示实时状态和位置。
a)
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {
/* 从接收数据寄存器读取一个字节 */
unsigned char c = (USART_ReceiveData(USART1) & 0xFF);
b)
void ProcessReceive(char c)
{
…
…
}
else {
// 将字符写入缓冲区
if ( 1 == USART_NUM ) // 添加了这个
FifoUsart_Insert(USART1_NUM, USART_DIR_RX, c); // 添加了这个检查
else
FifoUsart_Insert(USART2_NUM, USART_DIR_RX, c);
}
}
}
TQ。