OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5184|回复: 5

串口通信控制无刷电机遇到问题

[复制链接]

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2020-11-21
在线时间
50 小时
发表于 2021-4-21 13:08:48 | 显示全部楼层 |阅读模式
5金钱
我在用串口通信控制无刷电机时,将代码烧录后,led灯没有闪烁,用串口调试助手也没有反应,可当我将关于无刷电机的代码移除后,串口通信恢复了正常,不知道这是何原因,求各位前辈赐教。(无刷电机代码我在单独运行时是OK的)
  1. int main(void)
  2. {
  3.         u8 t;  //typedef unsigned char uint8_t;
  4.         u8 len;       
  5.         u16 times=0;  //typedef unsigned short uint16_t;
  6.         Nvic_Init();
  7.             LED_Init();
  8.             delay_init();
  9.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  10.         uart2_init(9600);         //串口初始化为9600
  11.             PWM_GPIO_Init();
  12.         HALL_GPIO_Init();
  13.         Timer1_Init();
  14.         LED1=1;
  15.   while(1)
  16.         {   
  17.                         if(USART_RX_STA&0x8000)
  18.                 {                                          
  19.                         len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
  20.                         printf("\r\n您发送的消息为:\r\n");
  21.                         for(t=0;t<len;t++)
  22.                         {
  23.                                 USART2->DR=USART_RX_BUF[t];  //当接收到从电脑发过来的数据,把接收到的数据保存在 USART_RX_BUF 中,
  24.                                 while((USART2->SR&0X40)==0);//等待发送结束,串口的状态可以通过状态寄存器 USART_SR 读取。
  25.                         }
  26.                         printf("\r\n\r\n");//插入换行
  27.                         USART_RX_STA=0;
  28.                                  if(strcmp((char*)USART_RX_BUF,"电机1正转")==0)
  29.                                         {
  30.                                                         BLDC_CW();
  31.                                                     printf("\r\n电机正转\r\n");
  32.                                         }
  33.                                          if(strcmp((char*)USART_RX_BUF,"电机1停止")==0)
  34.                                         {
  35.                                                         BLDC_STOP();
  36.                                                     printf("\r\n电机停止\r\n");
  37.                                        
  38.                                         }
  39.                                
  40.                 }else
  41.                 {
  42.                         times++;
  43.                         if(times%5000==0)
  44.                         {
  45.                                 printf("\r\nALIENTEK MiniSTM32开发板 串口实验\r\n");
  46.                                 printf("正点原子@ALIENTEK\r\n\r\n\r\n");
  47.                         }
  48.                         if(times%200==0)printf("请输入数据,以回车键结束\r\n");  
  49.                         if(times%30==0)LED1=!LED1;//闪烁LED,提示系统正在运行.
  50.                         delay_ms(10);
  51.                                              
  52. }
  53.                
  54. }

  55. }
复制代码


最佳答案

查看完整内容[请看2#楼]

GPIO是否被占用,是否有中断一直在触发
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-4-21 13:08:49 | 显示全部楼层
GPIO是否被占用,是否有中断一直在触发
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2021-4-21 14:52:41 | 显示全部楼层
单步调试就是这个时候用的
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2021-4-22
在线时间
0 小时
发表于 2021-4-22 08:15:19 | 显示全部楼层
前几天我也遇到了不知道什么情况
回复

使用道具 举报

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2020-11-21
在线时间
50 小时
 楼主| 发表于 2021-4-23 14:01:10 | 显示全部楼层
问题已经解决,是我电机代码编写有问题
回复

使用道具 举报

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2020-11-21
在线时间
50 小时
 楼主| 发表于 2021-4-23 14:01:49 | 显示全部楼层
阿侑kevin 发表于 2021-4-23 13:20
GPIO是否被占用,是否有中断一直在触发

的确是定时器中断一直在触发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 06:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表