关于高速GPIO输出的问题

2019-07-21 04:52发布

GPIO端口配置寄存器中有一个输出模式的配置:
MODEy[1:0]:端口x的模式位(y = 8…15) (Port x mode bits)  位9:28 
软件通过这些位配置相应的I/O端口,请参考表17端口位配置表。 
00:输入模式(复位后的状态) 
01:输出模式,最大速度10MHz 
10:输出模式,最大速度2MHz 
11:输出模式,最大速度50MHz 

从字面上理解,其GPIO端口可以实现最高50MHZ的数字信号输出。但实际测试中发现,无论设置为何种模式,其GPIO输出速率都在3MHZ上下,没有任何变化。请问如果想输出10M的数字信号,是否有什么特殊的设置?或者是硬件设计上有什么特别需要注意的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
溫柔一刀
1楼-- · 2019-07-21 10:30
從你的測試......
我猜測, 你的問題在於你對ASM的理解出了問題,
我假設你是這樣測的
while(1){
    call_gpio_h();
    call_gpio_lo();
}
就上面c程式編成asm, 我假定要 10行asm, 我又假定一行asm 要 1us時間, 這要看你怎麼設定你的MCU CLK
我想講到這裡你已經明白問題點了
ricefat
2楼-- · 2019-07-21 10:31
 精彩回答 2  元偷偷看……
linzhb
3楼-- · 2019-07-21 14:51
我大致明白你讲的问题,你的意思是一条C语言的代码可能需要好几条汇编指令来完成,表面上看执行一条C语句,但实际上已经执行了好几条汇编的指令,已经占用了很几个时钟周期了。那请问有没有办法来评估我的C代码执行花费了多少的时钟周期?
linzhb
4楼-- · 2019-07-21 18:55
回复【2楼】溫柔一刀:
---------------------------------
我大致明白你讲的问题,你的意思是一条C语言的代码可能需要好几条汇编指令来完成,表面上看执行一条C语句,但实际上已经执行了好几条汇编的指令,已经占用了很几个时钟周期了。那请问有没有办法来评估我的C代码执行花费了多少的时钟周期?
溫柔一刀
5楼-- · 2019-07-21 20:23
 精彩回答 2  元偷偷看……

一周热门 更多>