STM32是一款專業的圖形編程軟件,支持Python、blockly、hex等多種代碼的讀寫,用戶不需要任何硬件支持就可以模擬運行環境,實時操作系統和中間件、開發套件、硬件仿真器以及狀態機建模工具。
1、STM32的學習門檻
STM32的開發是基于C語言的,當然也使用了一些簡單的匯編(啟動文件)語言,匯編我們不需要去了解很多,熟悉幾條簡單的指令就行。C語言的話就需要做到熟練掌握了,因為STM32的開發庫使用了大量的結構體、指針等知識,所以要想學好STM32,學好C語言是第一個前提!
2、單片機原理
掌握了C語言這個前提以后,就可以開始STM32的學習了,STM32畢竟也是個MCU,也就是單片機,是相對于51單片機更復雜一點的單片機,所以就要了解單片機的工作原理,知道MCU是怎么工作的,知道MCU內部RAM ROM CPU等等是如何協調工作的。
3、基本的電路知識
一個完整的項目不僅僅只有MCU,還有復雜的外圍電路,比如LED、蜂鳴器、LCD、各種傳感器電路、電源電路等等,所以還要熟練掌握基礎的電路知識。例如三極管、MOS管、二極管等等器件,以及三極管搭建的開關電路、放大電路等等。
4、學習STM32要先易后難
自學STM32,一定要先易后難,不要著急做項目,先把MCU的基本外設熟練掌握,再去做項目。可以先把MCU簡單的外設實驗做一遍,比如:STM32啟動文件、GPIO、USART、IIC、SPI、RTC、DMA、ADC、定時器等,先把這些簡單的外設熟練掌握,再去學習SDIO、ETH以太網、CAN等等復雜的外設。其實在掌握了簡單的外設之后,就可以先去做些項目鍛煉一下,在實踐中提升自己。
自動ISP,把BOOT0與地直接連接,那么每次上電就會運行程序,而且只要點擊電腦上的“下載”按鈕,就開始下載程序,下載完程序,就開始執行。實現此目的,需要借助串口握手信號DTR和RTS。
DTR連接RESET(復位引腳),控制復位,RTS連接BOOT0,用來控制程序運行或者等待下載。
下面說明如何用USB轉TTL芯片實現STM32自動ISP。CH340芯片如下圖所示:
CH340芯片,DTR和RTS引腳在一般情況下是高電平,低電平有效。因為STM32的RESET引腳,也是一般情況下是高電平,低電平復位,所以DTR可以與RESET直接連接。但是BOOT0是高電平下載程序,低電平運行程序,正好與RTS相反,所以我們需要把它反相,加一個NPN三極管即可。電路如下圖所示:
ISP軟件的選擇:
看了上圖的選擇,有些人一定會產生疑慮。按道理應該是低電平復位,然后低電平進入BOOTLoader呀。但是,有一點需要注意,它這里講的高低電平,是針對電腦原始的9針串口的,也就是“232電平”,我們用的USB轉TTL芯片是“TTL電平”,正好相反。
下載過程和結果如下圖所示:
注意:CH340在剛上電,穩定需要幾秒鐘時間,在此期間,DTR引腳會有兩次或者三次的變低情況,這樣會引起單片機上電后復位兩三次,穩定后不會影響程序運行。如果不想讓單片機上電復位好幾次,上電的時候把DTR與RESET斷開即可。
http://pan.baidu.com/s/1dF5XqfR下載并安裝驅動ST-LINK驅動
將st-link插入usb,進入設備管理器,查看驅動是否安裝成功
http://pan.baidu.com/s/1jHDE1X8下載并安裝STVP燒寫軟件
打開STVP,選擇configure菜單欄下的configure ST Visual Programmer,彈出如圖所示的界面,選擇ST-LINK,SWD模式,再選擇芯片的型號,點擊確定
關于ST-link與stm32的連線,只需要將ST-link上的VCC、GND、SWCLK、SWDIO四個接口分別與stm32對應引腳相連即可,注意芯片的工作電壓是5V還是3.3V,不要選錯了
菜單欄下面有一排圖標按鈕,點擊第二個就能燒寫了,如果芯片之前燒寫過程序,則要先點擊第5個按鈕擦除程序后才能燒寫
1、一般stm32都會使用swd方式進行下載,因為節省引腳。
2、那么不管是否用到了JTAG引腳。最好的方式就是首先把jtag禁掉,以免自己操縱某個引腳時,發現引腳始終不能
按照設計進行拉高或者拉低操作。
3、禁掉jtag方式:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
4、可以把這段代碼放在gpio初始化中。