[PIC®/AVR®/dsPIC®产品] PIC18F16Q41配置6路PWM输出

[复制链接]
2780|10
 楼主| dongnanxibei 发表于 2024-12-10 21:52 | 显示全部楼层 |阅读模式

配置如上,非常容易操作,这比很多单片机都容易,MCC现在真是好用的不得了
在输出IO映射直接选择连续的6个IO

针对每一个PWM发生器都有对应头文件和库函数



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| dongnanxibei 发表于 2024-12-10 21:54 | 显示全部楼层
  1. void SYSTEM_Initialize(void)
  2. {
  3.     CLOCK_Initialize();
  4.     PIN_MANAGER_Initialize();
  5.     PWM1_16BIT_Initialize();
  6.     PWM2_16BIT_Initialize();
  7.     PWM3_16BIT_Initialize();
  8.     INTERRUPT_Initialize();
  9. }
在初始化函数里,也自动给添加进去了各个PWM发生器的初始化函数
直接按照名字写好一组,修改另外两组就行了
  1. PWM1_16BIT_WritePeriodRegister(10000);
  2.     PWM1_16BIT_SetSlice1Output1DutyCycleRegister(5000);
  3.     PWM1_16BIT_SetSlice1Output2DutyCycleRegister(5000);
  4.     PWM1_16BIT_LoadBufferRegisters();
  5.    
  6.     PWM2_16BIT_WritePeriodRegister(10000);
  7.     PWM2_16BIT_SetSlice1Output1DutyCycleRegister(5000);
  8.     PWM2_16BIT_SetSlice1Output2DutyCycleRegister(5000);
  9.     PWM2_16BIT_LoadBufferRegisters();   
  10.    
  11.     PWM3_16BIT_WritePeriodRegister(10000);
  12.     PWM3_16BIT_SetSlice1Output1DutyCycleRegister(5000);
  13.     PWM3_16BIT_SetSlice1Output2DutyCycleRegister(5000);
  14.     PWM3_16BIT_LoadBufferRegisters();
太方便了。
 楼主| dongnanxibei 发表于 2024-12-10 22:01 | 显示全部楼层
如果我用6路PWM控制某个东西的6个维度,那么只要修改对应的输出占空比就行了, 真是方便啊。
小明的同学 发表于 2024-12-13 09:45 | 显示全部楼层
太棒了,竟然这么轻松搞定。
antusheng 发表于 2024-12-26 12:15 | 显示全部楼层
这个操作简直太绝了。配置真是太容易了。
gejigeji521 发表于 2024-12-29 14:19 来自手机 | 显示全部楼层
可以使用中断吗?
gejigeji521 发表于 2024-12-29 14:20 来自手机 | 显示全部楼层
如何让每一路产生指定数额周期的信号呢?
jiekou001 发表于 2025-1-11 13:20 | 显示全部楼层
这个操作太棒了,代码也干净利落。
xixi2017 发表于 2025-1-15 07:55 | 显示全部楼层

PWM2_16BIT_SetSlice1Output1DutyCycleRegister(5000); PWM2_16BIT_SetSlice1Output2DutyCycleRegister(5000);

这是多少位宽

稳稳の幸福 发表于 2025-1-26 18:25 | 显示全部楼层
这个操作太酷了,这貌似比STM32的还容易做。
稳稳の幸福 发表于 2025-1-26 18:25 | 显示全部楼层
可以试试做FOC控制如何
您需要登录后才可以回帖 登录 | 注册

本版积分规则

225

主题

3848

帖子

18

粉丝
快速回复 在线客服 返回列表 返回顶部