STM32-能够生成VGA信号?

STM32-能够生成VGA信号?,stm32,mbed,vga,Stm32,Mbed,Vga,说清楚,我对STM32和MBED编程非常陌生,但使用STM32核子-F070RB板是否可以创建有效的VGA信号?我已经学会了,我的目标是在屏幕上显示“某物”。有了这个,我的意思是我应该控制我想打开哪个像素 对于演示,以下是我(非常粗糙)的草图: #包括 数码输出led(LED1); 数码输出h_同步(PC_3); 数码输出v_同步(PC_2); 数码输出c_红色(PC_0); int main(){ h_sync=1; v_sync=1; int line_count=0; int color_

说清楚,我对STM32和MBED编程非常陌生,但使用STM32核子-F070RB板是否可以创建有效的VGA信号?我已经学会了,我的目标是在屏幕上显示“某物”。有了这个,我的意思是我应该控制我想打开哪个像素

对于演示,以下是我(非常粗糙)的草图:

#包括
数码输出led(LED1);
数码输出h_同步(PC_3);
数码输出v_同步(PC_2);
数码输出c_红色(PC_0);
int main(){
h_sync=1;
v_sync=1;
int line_count=0;
int color_red=0;
而(1){
等等我们(21);
h_sync=0;
等等我们(3);
h_sync=1;
等待(2);
行数++;
颜色_红色++;
如果(color_red==16){color_red=0;c_red=!c_red;}
如果(行计数=601)v_sync=0;
如果(行计数=605)v_同步=1;
如果(line_count==628){line_count=0;c_red=0;color_red=0;}
}
}
我已将V-Sync连接到显示器的V-Sync,与H-Sync和c_红色(红色)相同,通过560欧姆电阻连接到红色信号。它(有点)奏效了!它每16行显示一条红色条纹。完美,但我需要能够控制每个像素(如果可能的话)。我看过一些VGA库(也许),但我真的需要自己编写它-一些非常粗糙的东西。我只想对像素进行某种控制,而不是一些超级的东西(仅供我学习:)。因为我对STM没有太多经验,几个小时后我无法“说服”我的董事会产生这样的“高速”信号,所以,这到底是可能的吗


我使用MBED的Ticker函数为每个像素生成计时,但它不起作用-Ticker对我来说最快的速度大约是几毫秒,太快了。我可以使用定时器中断吗?还是别的什么?

如果你亲眼目睹了这种情况,那么拖延肯定不会奏效。我想是STM32F4。但是你的问题已经离题了。请阅读VGA规范中关于计时的内容。这对正确的时机要求很高。我很确定你的延迟是2纳秒???不准确。@TomServo是的,2纳米用于后廊部分(我不能做2,2),但是的,我知道这是错误的(即使我的显示器正确识别),这是我的第一次测试,但我应该如何做得更好?定时器中断?股票行情?还有别的吗?谢谢。我曾经尝试过一个类似的项目,但也参与了其他的事情。我觉得很有趣。也许这对你也有帮助。如果你亲眼目睹了这种情况的发生,那么拖延肯定是行不通的。我想是STM32F4。但是你的问题已经离题了。请阅读VGA规范中关于计时的内容。这对正确的时机要求很高。我很确定你的延迟是2纳秒???不准确。@TomServo是的,2纳米用于后廊部分(我不能做2,2),但是的,我知道这是错误的(即使我的显示器正确识别),这是我的第一次测试,但我应该如何做得更好?定时器中断?股票行情?还有别的吗?谢谢。我曾经尝试过一个类似的项目,但也参与了其他的事情。我觉得很有趣。也许这对你也有帮助。
#include <mbed.h>

DigitalOut led(LED1);
DigitalOut h_sync(PC_3);
DigitalOut v_sync(PC_2);
DigitalOut c_red(PC_0);

int main() {
        h_sync = 1;
        v_sync = 1;
        int line_count = 0;
        int color_red = 0;
    while(1) {
        wait_us(21);
        h_sync = 0;
        wait_us(3);
        h_sync = 1;
        wait_ns(2);
        line_count++;
        color_red++;
        if (color_red == 16) { color_red = 0; c_red = !c_red; }
        if (line_count == 601) v_sync = 0;
        if (line_count == 605) v_sync = 1;
        if (line_count == 628) { line_count = 0; c_red = 0; color_red = 0; }
    }
}