找回密码
 立即注册
楼主: 布丁橘长

布丁橘长-STC32屠龙刀视频-代码分享&问题讨论帖

  [复制链接]
  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-29 13:02:20
已绑定手机

0

主题

130

回帖

174

积分

注册会员

积分
174
发表于 2024-11-12 16:57:58 来自手机 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:74
  • 最近打卡:2025-04-29 13:02:20
已绑定手机

0

主题

130

回帖

174

积分

注册会员

积分
174
发表于 2024-11-12 17:07:04 来自手机 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-11-30 09:18:40

3

主题

2

回帖

68

积分

注册会员

积分
68
发表于 2024-11-30 20:36:16 | 显示全部楼层
本帖最后由 清风予我 于 2024-12-2 13:19 编辑

这个板子的原理图没有找到,请提供一下好吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-03 08:04:02
已绑定手机

1

主题

7

回帖

60

积分

注册会员

积分
60
发表于 2024-12-2 11:52:52 | 显示全部楼层
我想问一下,同时将PWMA和PWMB可以设置成不同频率可以吗
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-04-27 10:40:24

11

主题

425

回帖

1971

积分

版主

积分
1971
发表于 2024-12-2 13:19:51 | 显示全部楼层
try*** 发表于 2024-11-30 20:36
这个板子的原理图没有找到,请提供一下好吗

开天斧-屠龙刀-LQFP64-DIP64-V2.2-SCH.pdf (162.04 KB, 下载次数: 59)
QQ:2269694595     微信:18106296594
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-03 08:04:02
已绑定手机

1

主题

7

回帖

60

积分

注册会员

积分
60
发表于 2025-2-7 11:18:10 | 显示全部楼层
PWMA中的两路互补波形如何实现不同时间的启停,同一时间启停可以实现,不同时启停怎么是实现?我是初学者,希望高手能予指导,谢谢!

点评

启动后,不打开PWMx_ENO对应的位即可,等待所需要的时间后再打开就可以做到不同时间的启停了。实际内部是运行的,只是不对外输出。 如果你想问的是如何将两个波形错开一个相位,这个需要使用pwm移相功能,具体请参见  详情 回复 发表于 2025-2-7 14:22
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2218

回帖

5450

积分

版主

积分
5450
发表于 2025-2-7 14:22:36 | 显示全部楼层
lgy197*** 发表于 2025-2-7 11:18
PWMA中的两路互补波形如何实现不同时间的启停,同一时间启停可以实现,不同时启停怎么是实现?我是初学者, ...

启动后,不打开PWMx_ENO对应的位即可,等待所需要的时间后再打开就可以做到不同时间的启停了。实际内部是运行的,只是不对外输出。
如果你想问的是如何将两个波形错开一个相位,这个需要使用pwm移相功能,具体请参见技术手册的pwm移项部分
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-03 08:04:02
已绑定手机

1

主题

7

回帖

60

积分

注册会员

积分
60
发表于 2025-2-8 23:18:54 | 显示全部楼层
收到,非常感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-03 08:04:02
已绑定手机

1

主题

7

回帖

60

积分

注册会员

积分
60
发表于 2025-2-19 17:14:36 | 显示全部楼层
大家帮帮忙,有这么一个问题想和大家探讨一下
if(PWM_DUTY<=duty1)(PWM_DUTY+=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
                PWMA_CCR1L =PWM_DUTY); //else                                //CC1通道占空比更新
    if(PWM_DUTY>=duty1)(PWM_DUTY-=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
          PWMA_CCR1L = PWM_DUTY);         当PWM_DUTY+=1时波形正常,当为4时就不正常了,是什么原因呢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-04-03 08:04:02
已绑定手机

1

主题

7

回帖

60

积分

注册会员

积分
60
发表于 2025-2-19 18:26:16 | 显示全部楼层
这是单相逆变波形,占空比按百分比增加也是这样,附上源码
  1. #include <STC32G.H>
  2. #include <config.h>
  3. #include <intrins.H>
  4. #define FOSC           24000000UL             //24MHz,时钟周期0.5us
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. #define PWM_PSC          (12-1)                           //12分频
  8. #define PWM_PERIOD         40000        //周期2ms  50Hz
  9. #define PWM_DUTY    duty          //占空2%
  10. #define PWM_DTime                48                            //死区10us 1~10us 12~120
  11. u16 t1=2;
  12. u16 duty;
  13. u16 duty1=19990;
  14. //bit updateduty;
  15. void Timer2_Init(void);
  16. //void delayms(u16 ms);
  17. void SYS_Init();
  18. void PWM_Init();
  19. //void Update_duty();                                                //更新占空比函数
  20. //void Timer0_Init();
  21. void main()
  22. {
  23.   SYS_Init();
  24.         PWM_Init();
  25.         Timer2_Init();       
  26.         AUXR |= 0x10;                        //定时器2开始计时
  27.         EA=1;
  28.         //Update_duty();
  29.         while(1);
  30.           {         
  31.          
  32.                        
  33.                 }       
  34. }
  35. void SYS_Init()
  36. {
  37.         WTST=0;
  38.        
  39.         EAXFR=1;
  40.         CKCON=0;
  41.         duty=200;
  42.        
  43.         P0M1 = 0x00;P0M0 = 0x00;                //设置P0口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
  44.         P1M1 = 0x00;P1M0 = 0x00;                //设置P1口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
  45.         P2M1 = 0x00;P2M0 = 0x0F;                //设置P2口为推挽输出模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
  46.         P3M1 = 0x00;P3M0 = 0x00;                //设置P3口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出
  47. }       
  48.        
  49. void PWM_Init()
  50. {
  51.   PWMA_PSCRH=(char)(PWM_PSC>>8);
  52.         PWMA_PSCRL=(char)(PWM_PSC);       
  53.        
  54.         PWMA_CCER1=0x00;
  55.        
  56.         PWMA_CCMR1=0x60;
  57.   PWMA_CCMR2=0x30;
  58.        
  59.         PWMA_CCER1=0x55;
  60.                
  61.         PWMA_ARRH=(char)(PWM_PERIOD>>8),
  62.         PWMA_ARRL=(char)(PWM_PERIOD);
  63.        
  64.         PWMA_ENO =0x0f;
  65.         PWMA_PS  =0x05;
  66.         PWMA_DTR = PWM_DTime;                                                                // 插入死区时间
  67.        
  68.         PWMA_CCR1H=(char)(PWM_DUTY>>8);
  69.         PWMA_CCR1L=(char)(PWM_DUTY);
  70.         PWMA_CCR2H=(char)(PWM_PERIOD/2>>8);
  71.         PWMA_CCR2L=(char)(PWM_PERIOD/2);
  72.        
  73.         PWMA_IER =0x05;
  74.         PWMA_BKR=0x80;
  75.         PWMA_CR1=0x01;
  76. }
  77. void PWMA_ISR() interrupt 26
  78. {
  79.         if(PWMA_SR1&0x01)
  80.         {
  81.      PWMA_CCR2H=(char)(PWM_PERIOD/2>>8);  //设置占空比时间
  82.                  PWMA_CCR2L=(char)(PWM_PERIOD/2);
  83.      
  84.      PWMA_SR1&=~0x01;
  85.         }
  86.   else if(PWMA_SR1&0x04)
  87.   {         
  88.      PWMA_CCR2H=(char)((PWM_PERIOD/2+PWM_DUTY)>>8);
  89.            PWMA_CCR2L=(char)(PWM_PERIOD/2+PWM_DUTY);
  90.      PWMA_SR1&=~0x04;
  91.         }       
  92.   else
  93.         {
  94.      PWMA_SR1=0;
  95.   }
  96. }               
  97. void Timer2_Init(void)                                //1秒@24.000MHz
  98. {
  99.         TM2PS = 0x00;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
  100.         AUXR &= 0xFB;                        //定时器时钟12T模式
  101.         T2L = 0xB1;                                //设置定时初始值
  102.         T2H = 0x00;                                //设置定时初始值
  103.        
  104.         IE2 |= 0x04;                        //使能定时器2中断
  105.        
  106. }
  107. /*短路保护程序*/
  108. /*void INT0_Isr(void) interrupt 0
  109. {
  110.         in0:TR1=TR0=0;
  111.         IE&=0x85;
  112.         P14=0;
  113.         P03=0;
  114.         P35=0;
  115.         goto in0;
  116. }
  117. void INT1_Isr(void) interrupt 2
  118. {
  119.         in1:TR1=TR0=0;
  120.         IE&=0x85;
  121.         P14=0;
  122.         P04=0;
  123.         P35=0;
  124.         goto in1;
  125. }
  126. */
  127. void Timer2_Isr(void) interrupt 12
  128. {
  129.        
  130.         /*if(duty1>99)duty1=99;if(duty1<2)duty1=2;
  131.         if(t1<duty1)(t1++,duty=20*t1,PWMA_CCR1H = (u8)(duty >> 8),
  132.                 PWMA_CCR1L = duty); //else                                //设置CC1通道占空比
  133.   if(t1>duty1)(t1--,duty=20*t1,PWMA_CCR1H = (u8)(duty >> 8),
  134.           PWMA_CCR1L = duty); */
  135.        
  136.        
  137.     if(PWM_DUTY<=duty1)(PWM_DUTY+=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
  138.                 PWMA_CCR1L =PWM_DUTY); //else                                //设置CC1通道占空比
  139.     if(PWM_DUTY>=duty1)(PWM_DUTY-=4,PWMA_CCR1H = (u8)(PWM_DUTY >> 8),
  140.           PWMA_CCR1L = PWM_DUTY);        
  141.        
  142. }
  143. /*void delayms(u16 ms)                        //简单延时函数,自适应主频,1毫秒*ms
  144. {
  145.         u16 i;
  146.         do{
  147.                         i = MAIN_Fosc/6000;
  148.                         while(--i);
  149.                 }while(--ms);
  150. }
  151. */
复制代码
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 20:18 , Processed in 0.136435 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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