USB的IO口需不需要復(fù)用,如果要復(fù)用,怎么設(shè)置呢?沒發(fā)現(xiàn)手冊上有講啊,而且那2個口,PA11,PA12默認(rèn)是IO口??!怎么設(shè)置呢
答:在此部分代碼用于實(shí)現(xiàn)我們在硬件設(shè)計部分提到的功能,USB的配置通過三個函數(shù)完成:USB_Interrupts_Config()、Set_USBClock()和USB_Init(),第一個函數(shù)用于設(shè)置USB喚醒中斷和USB低優(yōu)先級數(shù)據(jù)處理中斷,Set_USBClock函數(shù)用于 配置USB時鐘,也就是從72M的主頻得到48M的USB時鐘(1.5分頻)。最后USB_Init()函數(shù)用于初始化USB,最主要的就是調(diào)用了Joystick_init函數(shù),開啟了USB部分的電源等。這里需要特別說明的是,USB配置并沒有對PA11和PA12這兩個IO口進(jìn)行設(shè)置,是因為,一旦開啟了USB電源(USB_CNTR的PDWN位清零)PA11和PA12將不再作為其他功能使用,僅供USB使用,所以在開啟了USB電源之后不論您怎么配置這兩個IO口,都是無效的。要在此獲取這兩個IO口的配置權(quán),則需要關(guān)閉USB電源,也就是置位USB_CNTR的PDWN位。
花了一個多月,終于學(xué)會了USB,呵呵,感覺還是蠻頭疼的,希望新手能夠耐心的看,時間長了,自然就懂了
答:根據(jù)地址和端點(diǎn)來接收請求,接收后一般存放在緩沖區(qū),STM32芯片就有一個USB和CAN共享的專用緩沖區(qū)。即緩沖區(qū)描述表在USB_core.c下的u8 Setup0_Process(void)函數(shù)里面可以看到,剛開始的時候,看到了也不懂,現(xiàn)在懂了。(具體說明詳見附件內(nèi)容。)