OpenEdv-开源电子网

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

stm32f103zet6用TIM1定时器四个通道输出四路pwm波

[复制链接]

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-7-15
在线时间
11 小时
发表于 2022-11-4 10:55:23 | 显示全部楼层 |阅读模式
18金钱
各位大佬们,首先,我用TIM1的四个通道产生PWM波,然后用其他定时器进行输入捕获脉冲数,通过控制脉冲数来控制步进电机转动,当达到我设置的脉冲数后,用TIM_SetCompare1(TIM1,0);函数停止,现在的问题是pwm正常产生,但是到达指定脉冲后无法停止,启动调试,发现在while循环里的判别函数里跳不出来,代码如下,求大佬指教。
  1. 主函数
  2. delay_init();                     //延时函数初始化          
  3.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  4.         uart_init(115200);         //串口初始化为115200
  5.         LED_Init();                             //LED端口初始化
  6.         KEY_Init();          //初始化与按键连接的硬件接口
  7. //        PEout(4)=0;   //使能
  8.                 GPIO_ResetBits(GPIOE,GPIO_Pin_4);
  9.                 PEout(5)=1;         //上圆周电机方向
  10.                 PEout(6)=1;  //报警
  11.                 TIM1_CH4_PWM_Init(1000, 71);  //不要传奇数   50  周期是500us   100 周期是1ms
  12.                 TIM3_Init() ;     //配置 TIM2_CH1_ETR 为外部脉冲计数  并且使能中断  来一个上升沿进一次中断
  13.             TIM5_Init();
  14.                 TIM1_CH3_PWM_Init(1000, 71);
  15.             TIM1_CH2_PWM_Init(1000, 71);
  16.             TIM1_CH1_PWM_Init(1000, 71);
  17. //
  18.         while(1)
  19.         {
  20.                 if(TIM_GetCounter(TIM3) >= 3)
  21.                 {
  22.                         TIM_SetCompare4(TIM1,0);
  23.                 }
  24.                 if(TIM_GetCounter(TIM5) >= 3)
  25.                 {
  26.                         TIM_SetCompare1(TIM1,0);//在这个循环里无法进入停止程序,两种可能,计数问题或者停止函数问题
  27.                 }
  28. pwm波产生函数

  29. void TIM1_CH4_PWM_Init(u16 arr ,u16 psc)
  30. {
  31.                 GPIO_InitTypeDef GPIO_InitStructure;
  32.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  33.                 TIM_OCInitTypeDef TIM_OCInitStructure;

  34.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  35.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   

  36.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11 ; //|GPIO_Pin_8;    //11是ch4  8 是ch1
  37.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  38.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出   //
  39.                 GPIO_Init(GPIOA,&GPIO_InitStructure);

  40.                 TIM_TimeBaseInitStructure.TIM_Period = arr; //设置自动重装载寄存器周期的值
  41.           TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//设置用来作为TIMx时钟频率预分频值 7199:10k
  42.                 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//设置时钟分割:TDTS = Tck_tim
  43.                 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
  44.                 TIM_TimeBaseInit(TIM1, & TIM_TimeBaseInitStructure);
  45.        
  46.                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  47.                 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  48.                 TIM_OCInitStructure.TIM_Pulse=arr/2;
  49.                 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
  50.                 TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
  51.                 TIM_OC4Init(TIM1,&TIM_OCInitStructure);

  52.                 TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);
  53.                 TIM_Cmd(TIM1,ENABLE);//ê1?ü?ò??ê§?üTIMxíaéè

  54.                 //下面这句是高级定时器才有,输出PWM必须打开
  55.                 TIM_CtrlPWMOutputs(TIM1, ENABLE);                             //pwm输出

  56. }
  57. void TIM1_CH3_PWM_Init(u16 arr ,u16 psc)
  58. {
  59.                 GPIO_InitTypeDef GPIO_InitStructure;
  60.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  61.                 TIM_OCInitTypeDef TIM_OCInitStructure;

  62.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  63.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   

  64.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10 ; //|GPIO_Pin_8;   
  65.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  66.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出   //
  67.                 GPIO_Init(GPIOA,&GPIO_InitStructure);

  68.                 TIM_TimeBaseInitStructure.TIM_Period = arr; //设置自动重装载寄存器周期的值
  69.           TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//设置用来作为TIMx时钟频率预分频值 7199:10k
  70.                 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//设置时钟分割:TDTS = Tck_tim
  71.                 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
  72.                 TIM_TimeBaseInit(TIM1, & TIM_TimeBaseInitStructure);
  73.        
  74.                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  75.                 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  76.                 TIM_OCInitStructure.TIM_Pulse=arr/2;
  77.                 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
  78.                 TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
  79.                 TIM_OC3Init(TIM1,&TIM_OCInitStructure);

  80.                 TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
  81.                 TIM_Cmd(TIM1,ENABLE);//ê1?ü?ò??ê§?üTIMxíaéè

  82.                 //下面这句是高级定时器才有,输出PWM必须打开
  83.                 TIM_CtrlPWMOutputs(TIM1, ENABLE);                             //pwm输出

  84. }

  85. void TIM1_CH2_PWM_Init(u16 arr ,u16 psc)
  86. {
  87.                 GPIO_InitTypeDef GPIO_InitStructure;
  88.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  89.                 TIM_OCInitTypeDef TIM_OCInitStructure;

  90.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  91.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   

  92.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9 ; //|GPIO_Pin_8;    //11是ch4  8 是ch1
  93.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  94.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出   //
  95.                 GPIO_Init(GPIOA,&GPIO_InitStructure);

  96.                 TIM_TimeBaseInitStructure.TIM_Period = arr; //设置自动重装载寄存器周期的值
  97.           TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//设置用来作为TIMx时钟频率预分频值 7199:10k
  98.                 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//设置时钟分割:TDTS = Tck_tim
  99.                 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
  100.                 TIM_TimeBaseInit(TIM1, & TIM_TimeBaseInitStructure);
  101.        
  102.                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  103.                 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  104.                 TIM_OCInitStructure.TIM_Pulse=arr/2;
  105.                 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
  106.                 TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
  107.                 TIM_OC2Init(TIM1,&TIM_OCInitStructure);

  108.                 TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
  109.                 TIM_Cmd(TIM1,ENABLE);//ê1?ü?ò??ê§?üTIMxíaéè

  110.                 //下面这句是高级定时器才有,输出PWM必须打开
  111.                 TIM_CtrlPWMOutputs(TIM1, ENABLE);                             //pwm输出

  112. }

  113. void TIM1_CH1_PWM_Init(u16 arr ,u16 psc)
  114. {
  115.                 GPIO_InitTypeDef GPIO_InitStructure;
  116.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  117.                 TIM_OCInitTypeDef TIM_OCInitStructure;

  118.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  119.                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   

  120.                 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8 ; //|GPIO_Pin_8;    //11是ch4  8 是ch1
  121.                 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  122.                 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出   //
  123.                 GPIO_Init(GPIOA,&GPIO_InitStructure);

  124.                 TIM_TimeBaseInitStructure.TIM_Period = arr; //设置自动重装载寄存器周期的值
  125.           TIM_TimeBaseInitStructure.TIM_Prescaler = psc;//设置用来作为TIMx时钟频率预分频值 7199:10k
  126.                 TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;//设置时钟分割:TDTS = Tck_tim
  127.                 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//TIM向上计数模式
  128.                 TIM_TimeBaseInit(TIM1, & TIM_TimeBaseInitStructure);
  129.        
  130.                 TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  131.                 TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  132.                 TIM_OCInitStructure.TIM_Pulse=arr/2;
  133.                 TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;
  134.                 TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
  135.                 TIM_OC1Init(TIM1,&TIM_OCInitStructure);

  136.                 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
  137.                 TIM_Cmd(TIM1,ENABLE);//ê1?ü?ò??ê§?üTIMxíaéè

  138.                 //下面这句是高级定时器才有,输出PWM必须打开
  139.                 TIM_CtrlPWMOutputs(TIM1, ENABLE);                             //pwm输出

  140. }

  141. 输入捕获函数

  142. void TIM3_Init(void)                                               
  143. {   
  144.     GPIO_InitTypeDef GPIO_InitStructure;
  145.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  146.     NVIC_InitTypeDef NVIC_InitStructure;
  147.        
  148.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //使能TIM3时钟
  149.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);   //使能GPIOA时钟
  150.    
  151.     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2;              //PA0 清除之前设置  
  152.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;           //PA0 输入  
  153.     GPIO_Init(GPIOD, &GPIO_InitStructure);
  154.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);                       //PA0 下拉
  155.    
  156.     //初始化定时器2 TIM2   
  157.     TIM_TimeBaseStructure.TIM_Period = 0xFFFF;              //设定计数器自动重装值
  158.     TIM_TimeBaseStructure.TIM_Prescaler =0;                 //预分频器   
  159.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
  160.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
  161.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);         //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
  162.     TIM_ITRxExternalClockConfig(TIM3,TIM_TS_ETRF);          //配置外部触发,否则不会计数
  163.     TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);   //TIM_ExtTRGPolarity_Inverted  下降沿
  164.     TIM_SetCounter(TIM3, 0);        
  165.     TIM_Cmd(TIM3,ENABLE );                                  //使能定时器
  166.                
  167.          TIM_ITConfig(  //使能或者失能指定的TIM中断
  168.                  TIM3, //TIM2
  169.                  TIM_IT_Trigger ,
  170.                  ENABLE  //使能
  171.                  );
  172.         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
  173.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占优先级0级
  174.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  //从优先级3级
  175.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  176.         NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器               
  177. //Cnt = TIM_GetCounter(TIM3);      //   TIM_SetCounter(TIM3,0);                 
  178. }


  179. void TIM3_IRQHandler(void)   //TIM3中断
  180. {
  181.               if (TIM_GetITStatus(TIM3, TIM_IT_Trigger) != RESET)         //检查指定的TIM中断发生与否:TIM 中断源
  182.                       {
  183.                                       //time_cnt_linshi ++;
  184.                        TIM_ClearITPendingBit(TIM3, TIM_IT_Trigger  );           //清除TIMx的中断待处理位:TIM 中断源
  185.                                                
  186.                   //if(time_cnt_linshi==4)          //这里 4 就表示输出4 个上升沿就停止输出
  187.                                                        
  188.                   //{
  189.                           //TIM_Cmd(TIM1, DISABLE);  
  190.                                                         //time_cnt_linshi = 0;
  191.                   //}       
  192.           }               
  193. }
  194. /*                                            指定个脉冲停止输出用这个
  195. void TIM3_IRQHandler(void)   //TIM3中断
  196. {
  197.               if (TIM_GetITStatus(TIM3, TIM_IT_Trigger) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
  198.                       {
  199.                                       time_cnt_linshi ++;
  200.                        TIM_ClearITPendingBit(TIM3, TIM_IT_Trigger  );  //清除TIMx的中断待处理位:TIM 中断源
  201.                                                
  202.                   if(time_cnt_linshi==4)        //这里 4 就表示输出4 个上升沿就停止输出
  203.                                                        
  204.                   {
  205.                           TIM_Cmd(TIM1, DISABLE);  //使能TIMx外设
  206.                                                         time_cnt_linshi = 0;
  207.                   }       
  208.           }               
  209. }
  210. */
  211. void TIM5_Init(void)                                               
  212. {   
  213.     GPIO_InitTypeDef GPIO_InitStructure;
  214.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  215.     NVIC_InitTypeDef NVIC_InitStructure;
  216.        
  217.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);    //使能TIM4时钟
  218.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //使能GPIOE时钟
  219.    
  220.     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;              //PE0 清除之前设置  
  221.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;           //PE0 输入  
  222.     GPIO_Init(GPIOA, &GPIO_InitStructure);
  223.     GPIO_ResetBits(GPIOA,GPIO_Pin_0);                       //PE0 下拉
  224.    
  225.     //初始化定时器5 TIM5   
  226.     TIM_TimeBaseStructure.TIM_Period = 0xFFFF;              //设定计数器自动重装值
  227.     TIM_TimeBaseStructure.TIM_Prescaler =0;                 //预分频器   
  228.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
  229.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
  230.     TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);         //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
  231.     TIM_ITRxExternalClockConfig(TIM5,TIM_TS_ETRF);          //配置外部触发,否则不会计数
  232.     TIM_ETRClockMode2Config(TIM5, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);   //TIM_ExtTRGPolarity_Inverted  下降沿
  233.     TIM_SetCounter(TIM4, 0);        
  234.     TIM_Cmd(TIM5,ENABLE );                                  //使能定时器
  235.                
  236.          TIM_ITConfig(  //使能或者失能指定的TIM中断
  237.                  TIM5, //TIM4
  238.                  TIM_IT_Trigger ,
  239.                  ENABLE  //使能
  240.                  );
  241.         NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  //TIM4中断
  242.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //先占优先级0级
  243.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  //从优先级3级
  244.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
  245.         NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器               
  246. //Cnt = TIM_GetCounter(TIM3);      //   TIM_SetCounter(TIM3,0);                 
  247. }


  248. void TIM5_IRQHandler(void)   //TIM4中断
  249. {
  250.               if (TIM_GetITStatus(TIM5, TIM_IT_Trigger) != RESET)         //检查指定的TIM中断发生与否:TIM 中断源
  251.                       {
  252.                        TIM_ClearITPendingBit(TIM5, TIM_IT_Trigger  );           //清除TIMx的中断待处理位:TIM 中断源
  253.                                                   
  254.                         }}       




















复制代码

最佳答案

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

谢谢。我解决了。是因为我主程序函数写错了,导致卡在一个循环里出不来了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-7-15
在线时间
11 小时
 楼主| 发表于 2022-11-4 10:55:24 | 显示全部楼层
jinx 发表于 2022-11-7 13:57
你可以看看我发的一个帖子对你是不是有帮助,一个很有局限性的方法实现的。

谢谢。我解决了。是因为我主程序函数写错了,导致卡在一个循环里出不来了
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
771
金钱
771
注册时间
2021-4-15
在线时间
304 小时
发表于 2022-11-4 16:56:39 | 显示全部楼层
步进电机可以用单脉冲,然后你要多少个就调多少次
日常敲键--头秃一片
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2463
金钱
2463
注册时间
2017-4-4
在线时间
330 小时
发表于 2022-11-4 17:10:15 | 显示全部楼层
输入捕获,是不是得让TIM1的PWM输出引脚和TIM3的捕获引脚连接?
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-7-15
在线时间
11 小时
 楼主| 发表于 2022-11-4 17:50:39 | 显示全部楼层
jinx 发表于 2022-11-4 17:10
输入捕获,是不是得让TIM1的PWM输出引脚和TIM3的捕获引脚连接?

我连接了
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-7-15
在线时间
11 小时
 楼主| 发表于 2022-11-4 17:52:19 | 显示全部楼层
日渐秃兀 发表于 2022-11-4 16:56
步进电机可以用单脉冲,然后你要多少个就调多少次

主要是有四个步进电机,所以我就想用一个定时器四个通道,现在脉冲没问题,主要就是不知道为什么停不下来
回复

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
771
金钱
771
注册时间
2021-4-15
在线时间
304 小时
发表于 2022-11-7 09:23:39 | 显示全部楼层
htf 发表于 2022-11-4 17:52
主要是有四个步进电机,所以我就想用一个定时器四个通道,现在脉冲没问题,主要就是不知道为什么停不下来

是吧定时器使能关了和PWM输出都关了吗 还是输出PWM?
日常敲键--头秃一片
回复

使用道具 举报

24

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2463
金钱
2463
注册时间
2017-4-4
在线时间
330 小时
发表于 2022-11-7 13:57:41 | 显示全部楼层

你可以看看我发的一个帖子对你是不是有帮助,一个很有局限性的方法实现的。
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2022-7-15
在线时间
11 小时
 楼主| 发表于 2022-11-8 15:12:27 | 显示全部楼层
日渐秃兀 发表于 2022-11-7 09:23
是吧定时器使能关了和PWM输出都关了吗 还是输出PWM?

谢谢。我解决了。是因为我主程序函数写错了,导致卡在一个循环里出不来了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 04:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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