- 打卡等级:偶尔看看I
- 打卡总天数:17
- 最近打卡:2024-09-17 10:21:00
注册会员
- 积分
- 169
|
发表于 2024-9-1 20:13:03
|
显示全部楼层
用timer产生方波,需要执行io口的0,1赋值,当评率达到 860K的时候,就上不去了,估计是timer isr 服务占用了时间。通过pwm 产生了需要的频率可以达到1M。
void PWM_init()
{
P_SW2 |= 0x80;
PWMA_PS=0x10; //select PWMA3Pin P:P24,N:P25 -useP24
PWMA_CCER2 = 0x00; // before update CCMRx ,reset CCERx to close PWMA/B channel, clear
PWMA_CCMR3 = 0x60; //set PWMA channel,mode 1
PWMA_CCER2 = 0x01; //config PWMA channel enable OUT,PWMA3P ,
PWMA_CCR3 = 14;//PWM_DUTY; // occupation count
PWMA_ARR = 28;//PWM_PERIOD; // period count
PWMA_ENO = 0x10; //ennabe OUT.PWMA3P
PWMA_BKR = 0x80; //enable main OUT
PWMA_CR1 = 0x01; //start counter
}
只是又遇到一个问题,用PWM产生的方波频率,在定时timer中通过PWMA_CR1 =0x00和0x01 启动和停止后,不确定是停止在高电平还是低电平,请问这个有方法控制吗
|
|