stm32串口发送数据

qq_27813395 2015-10-24 06:44:35
void USART1_IRQHandler(void)
{
int i=0,j=0;
uc8 test_matrix[100] =
{
0x11,0x02,0x60,0x60,0x00,0x01,0x01,0x00,0xD5,0x3A,
0x11,0x02,0x81,0x60,0x00,0x01,0xE0,0x10,0xF4,0x45,
0x11,0x02,0x40,0x60,0x00,0x01,0x06,0x00,0x86,0x42,
0x11,0x03,0x7A,0x60,0x00,0x01,0x00,0x80,0x16,0x00,0x6F,0xC6,
0x11,0x02,0x40,0x60,0x00,0x01,0x3F,0x00,0xFC,0xE5,
0x10,0x01,0x41,0x60,0x00,0x01,0xAB,0xF0,0x4F,
0x11,0x02,0x40,0x60,0x00,0x01,0x0F,0x01,0xE0,0x9E,
0x10,0x01,0x7C,0x20,0x01,0x01,0xE2,0x09,0x4F
};
int num_matrix[9]={0,10,20,30,42,52,61,71,80};
for(i=0; i<9; i++)
{
for(j=num_matrix[i];j<num_matrix[i+1];j++)
{
USART_SendData(test_matrix[j]);
}
Delay();
}


}
这样发送会存在什么问题了?
...全文
217 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Xtudent 2015-10-30
  • 打赏
  • 举报
回复
这是个中断,你如果没有在外面有发送的指令的话,程序不会跑到这里发送数据。你这个最好改成一个子程序,而不是中断,改成子程序,你这个程序逻辑就没什么问题了
花开花落_fzu 2015-10-30
  • 打赏
  • 举报
回复
1 、在中断函数中不要添加任何多余的函数 2、i=8的时候,就会造成越界
0深水蓝0 2015-10-28
  • 打赏
  • 举报
回复
1.中断里面干那么长时间的工作,简直就是找死,不过可以试试啦。 2.内存会越界: for(j=num_matrix[i];j<num_matrix[i+1];j++) 其中i的取值是0~8,当i=8的时候,num_matrix[i+1]就是num_matrix[9],了,越界了。 3.如果num_matrix里面的值是从小到大排列的话,你的逻辑其实可以简化成 for(j=num_matrix[0];j<num_matrix[8];j++) { USART_SendData(test_matrix[j]); }
默寞 2015-10-26
  • 打赏
  • 举报
回复
中断里面又是for又是delay,这是想死么
sdy19930904 2015-10-24
  • 打赏
  • 举报
回复
程序 能编译成功么?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧