PWMA
想做一个互补PWM信号。当P3.5按下去后P2.0 P2.1输出。程序P2.0 2.1没反应啥情况,各位高手帮忙看看啥问题?
另外用24M系统时钟,想要实现1S周期 50%占空比。ARR 和CCR怎么配置,这两个寄存器的高低电平不太会用。
可以先从参考范例学起
看内部框图,对着来就好了
#define PLUSE_PWM_HZ 38000L //红外频率38KHZ
#define PWM_ARR_LOAD(MAIN_Fosc / PLUSE_PWM_HZ)
PWMA_ARRH = (uint16_t)PWM_ARR_LOAD >> 8; //设置周期时间
PWMA_ARRL = PWM_ARR_LOAD;
PWMA_CCR4H = 0;
PWMA_CCR4L = 210; //设置占空比时间
这个是我前段时间研究红外发射时候写的,ARR根据时钟频率和需要的频率计算得出,你的需求24M时钟要出来1HZ 的频率,需要分频,不然ARR不够装,你自己配置,然后根据计算出来的ARR,取一半装到CCR,就是50%占空比 lezjin 发表于 2024-8-20 18:21
#define PLUSE_PWM_HZ 38000L //红外频率38KHZ
#define PWM_ARR_LOAD(MAIN_Fosc / PLUSE_PWM_HZ) ...
PWMA_ARRH = (uint16_t)PWM_ARR_LOAD >> 8,这个是用低8位的意思吗?
如果是 数据类型为UINT 16阿 18344371880 发表于 2024-8-20 17:25
看内部框图,对着来就好了
新手,细节不是很懂 DEVIN_LI 发表于 2024-8-21 08:50
PWMA_ARRH = (uint16_t)PWM_ARR_LOAD >> 8,这个是用低8位的意思吗?
如果是 数据类型为UINT 16阿 ...
这个是高8位
还有一种办法就是直接用PWMA_ARR,这个在头文件中定义是int型的
DEVIN_LI 发表于 2024-8-21 08:51
新手,细节不是很懂
上面不是寄存器名称,按照那个名字搜索就好了
页:
[1]