找回密码
 立即注册
楼主: huatlwangl

请教下,这个8H系列MCU 中两项细分程序

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-02 21:17:31
已绑定手机
已实名认证

110

主题

2223

回帖

5464

积分

版主

积分
5464
发表于 2024-10-9 10:17:50 | 显示全部楼层
huatl*** 发表于 2024-10-9 10:08
感觉这一部分有点问题,为什么if执行不了呢
if(P_CNT < 1)
                                {

你这部分中,PCNT只有第一次等于0的时候进入了一次。
然后就一直卡在下面这个>=1的判断里面循环了,你加在这里肯定是不对的。
你这个逻辑也比较混乱,看不出来你的这些标志位是要干什么的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-9 11:51:23 来自手机 | 显示全部楼层
王昱顺 发表于 2024-10-9 10:17
你这部分中,PCNT只有第一次等于0的时候进入了一次。
然后就一直卡在下面这个>=1的判断里面循环了,你加 ...

因为只需要他转一圈,执行一次,到达一圈角度后,即使再按着也不会转动,所以加了这些

点评

那你的停止不应该加在这里,应该找一个90°达到的标志,然后给关上  详情 回复 发表于 2024-10-9 12:04
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-02 21:17:31
已绑定手机
已实名认证

110

主题

2223

回帖

5464

积分

版主

积分
5464
发表于 2024-10-9 12:04:36 | 显示全部楼层
huatl*** 发表于 2024-10-9 11:51
因为只需要他转一圈,执行一次,到达一圈角度后,即使再按着也不会转动,所以加了这些 ...

那你的停止不应该加在这里,应该找一个90°达到的标志,然后给关上
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-9 14:16:50 | 显示全部楼层
王*** 发表于 2024-10-9 12:04
那你的停止不应该加在这里,应该找一个90°达到的标志,然后给关上

问题就在这里?怎么知道90°到达了呢

点评

[attachimg]59321[/attachimg] 定时器内有对M1_PulseCnt的自减处理。所以,在设定好脉冲数量后,判断M1_PulseCnt是否为0就可以得知此次运行是否完成 你可以将大约在程序696行附近的如图程序段替换为以下程序  详情 回复 发表于 2024-10-9 16:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-02 21:17:31
已绑定手机
已实名认证

110

主题

2223

回帖

5464

积分

版主

积分
5464
发表于 2024-10-9 16:17:01 | 显示全部楼层
huatl*** 发表于 2024-10-9 14:16
问题就在这里?怎么知道90°到达了呢

截图202410091614203205.jpg

定时器内有对M1_PulseCnt的自减处理。所以,在设定好脉冲数量后,判断M1_PulseCnt是否为0就可以得知此次运行是否完成
你可以将大约在程序696行附近的如图程序段替换为以下程序
  1. if (M1_PulseCnt != 0) // 总脉冲数非0减1
  2.         {
  3.             if (--M1_PulseCnt == 0)
  4.             {
  5.                 B_M1_RunEn = 0;
  6.                 PWMA_ENO = 0x00;//关闭输出
  7.             }   
  8.         }
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-10 09:10:21 | 显示全部楼层
王*** 发表于 2024-10-9 16:17
定时器内有对M1_PulseCnt的自减处理。所以,在设定好脉冲数量后,判断M1_PulseCnt是否为0就可以得知此 ...

但是加了这个后,到达90度的确停了,但是我释放按键后,他也不动了,也不回零了

点评

[attachimg]59382[/attachimg] 那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开 以便在下次启动的时候恢复输出  详情 回复 发表于 2024-10-10 09:28
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-02 21:17:31
已绑定手机
已实名认证

110

主题

2223

回帖

5464

积分

版主

积分
5464
发表于 2024-10-10 09:28:39 | 显示全部楼层
huatl*** 发表于 2024-10-10 09:10
但是加了这个后,到达90度的确停了,但是我释放按键后,他也不动了,也不回零了
...

截图202410100927242857.jpg

那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-10 10:04:34 | 显示全部楼层
王*** 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

尝试这四句打开后,还是和之前一样到达后仍然会缓慢转动
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-10 11:57:41 | 显示全部楼层
王*** 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

这是加了这四句的效果,不停了,按键释放后,的确是只转动了一圈。

IMG_8959.MP4

6.61 MB, 下载次数: 119

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-03-26 09:09:59

6

主题

104

回帖

351

积分

中级会员

积分
351
发表于 2024-10-11 15:46:18 | 显示全部楼层
王*** 发表于 2024-10-10 09:28
那你可以尝试再将RunMotor1()中的这四条被注释掉的语句解开
以便在下次启动的时候恢复输出
...

您好,但是我按下后,为什么到了90度还会继续转动呢
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 00:54 , Processed in 0.276681 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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