Page 2 of 2

【已解决】Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 13:15
by 15988991229
hearge 2023年 Apr 4日 11:43

*((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x2;
*((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x0;
您好,可以使用上面直接操作寄存器试下效果,8对应gpio号。

非常好,能做到比较精确的IO口输出,但是我们有多个口要用到,请问有没有一份BK7231寄存器的列表,方便我们对照使用?


Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 15:02
by 15988991229
15988991229 2023年 Apr 4日 13:15
hearge 2023年 Apr 4日 11:43

*((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x2;
*((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x0;
您好,可以使用上面直接操作寄存器试下效果,8对应gpio号。

可以的,做到了更快速的IO输出,但是在它们之后写的空循环语句好像不起作用了,IO输出波形跟没空循环差不多的。有没有什么好的建议吗?或者有什么指令可以实现?


Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 15:19
by 15988991229

后来我用了一个延时语句,分别用不同的延时参数(如下),结果发现发出来的波形图也是一样的,没有变化,请问一下关于加空循环有什么合理的建议或者指令可以实现?

void nop_delay(volatile UINT16_T times)
{
UINT16_T delay = times;
while(delay--) ;
}

Code: Select all

      *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x2;
        nop_delay(100);
       *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x0;
         nop_delay(100);              
        
       *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x2;
        nop_delay(1000);    
                  
       *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x0;
       nop_delay(1000);              
        

        *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x2;
       nop_delay(10);              
                   
       *((volatile unsigned int *)(0x0802800 +(8 * 4))) = 0x0;
       nop_delay(10);

Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 15:23
by hearge

for循环处理,可以加嵌套试下。
for(){
for() {
}
}


Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 15:50
by 15988991229
hearge 2023年 Apr 4日 15:23

for循环处理,可以加嵌套试下。
for(){
for() {
}
}

你好,延时的程序我已经处理好,问题已经解决,感谢贵公司工程师的支持!


Re: BK7231N_3.3.4如何用PWMIO口连续发不同评率的高速电平脉冲

Posted: 2023年 Apr 4日 16:22
by hearge

不客气