老丁帶你學USB-解疑3:STM32 USB IO口怎麼配置

1、STM32裏面,USB設備是怎麼接受USB主機發送的各種請求?接受以後存放在哪裏??

答:根據地址和端點來接收請求,接收後一般存放在緩衝區,STM32芯片就有一個USB和CAN共享的專用緩衝區。即緩衝區描述表在USB_core.c下的u8 Setup0_Process(void)函數裏面可以看到,剛開始的時候,看到了也不懂,現在懂了^_^

2、USB的IO口需不需要複用,如果要複用,怎麼設置呢?沒發現手冊上有講啊,而且那2個口,PA11,PA12默認是IO口啊!怎麼設置呢

答:在此部分代碼用於實現我們在硬件設計部分提到的功能,USB的配置通過三個函數完成:USB_Interrupts_Config()、Set_USBClock()和USB_Init(),第一個函數用於設置USB喚醒中斷和USB低優先級數據處理中斷,Set_USBClock函數用於 配置USB時鐘,也就是從72M的主頻得到48M的USB時鐘(1.5分頻)。最後USB_Init()函數用於初始化USB,最主要的就是調用了Joystick_init函數,開啓了USB部分的電源等。這裏需要特別說明的是,USB配置並沒有對PA11和PA12這兩個IO口進行設置,是因爲,一旦開啓了USB電源(USB_CNTR的PDWN位清零)PA11和PA12將不再作爲其他功能使用,僅供USB使用,所以在開啓了USB電源之後不論您怎麼配置這兩個IO口,都是無效的。要在此獲取這兩個IO口的配置權,則需要關閉USB電源,也就是置位USB_CNTR的PDWN位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章