stm32可以通過串列埠、jtag和swd口進行燒寫和除錯。
盜版jlink不能進行韌體公升級!盜版jlink不能進行韌體公升級!盜版jlink不能進行韌體公升級!
重定向輸出函式:在庫函式中有printf();函式,預設功能是在顯示器上回顯除錯資訊。該指令可以方便的輸出字串、符號和各種資料型別。printf()函式預設是呼叫int fputc(int ch, file *f)函式進行輸出的。可以通過重定義fputc()函式使輸出重定向到串列埠上。
stm32的串列埠:
stm32-m3共有4個串列埠:usart1-usart4。
初始化結構體:
usart_initstructure.usart_baudrate = bound;//波特率9600;
usart_initstructure.usart_wordlength = usart_wordlength_8b; //資料長度8bit
usart_initstructure.usart_stopbits = usart_stopbits_1;//停止位1位
usart_initstructure.usart_parity = usart_parity_no;//無校驗位
usart_initstructure.usart_hardwareflowcontrol = usart_hardwareflowcontrol_none;//無硬體流控制
usart_initstructure.usart_mode = usart_mode_rx | usart_mode_tx; //傳送、接收模式
控制結構體:
typedef struct
__io uint16_t sr; //狀態暫存器
uint16_t reserved0;
__io uint16_t dr; //資料快取暫存器,讀、寫實際上分別是兩個暫存器
uint16_t reserved1;
__io uint16_t brr; //波特率設定暫存器
uint16_t reserved2;
__io uint16_t cr1; //控制暫存器1
uint16_t reserved3;
__io uint16_t cr2; //控制暫存器2
uint16_t reserved4;
__io uint16_t cr3;//控制暫存器3
uint16_t reserved5;
__io uint16_t gtpr; //保護時間和預分頻暫存器
uint16_t reserved6;
} usart_typedef;
實際上每個變數就是乙個暫存器的。寫入、讀取sr,或者dr,實際上就是製作操作暫存器。
#define usart1 ((usart_typedef *) usart1_base)
由此可知,實際上這個控制結構體裡的每個變數,都指向控制暫存器的實際位址。
操作函式:
usart_init(usart_typedef* usartx, usart_inittypedef* usart_initstruct);//初始化函式
usart_deinit(usart_typedef* usartx);//串列埠復位
usart_senddata(usart_typedef* usartx, uint16_t data);//傳送資料
uint16_t usart_receivedata(usart_typedef* usartx);//讀取資料
flagstatus usart_getflagstatus(usart_typedef* usartx, uint16_t usart_flag);//讀取狀態
usart_cmd(usart1, enable); //使能串列埠1
usart_itconfig(usart_typedef* usartx, uint16_t usart_it,functionalstate newstate);//中斷設定函式
itstatus usart_getitstatus(usart_typedef* usartx, uint16_t usart_it);//中斷狀態獲取函式
STM32串列埠除錯
改為串列埠中斷接收方式,發現也只能進入一次接收中斷函式,把開啟中斷函式放入接收中斷函式內,可以連續進入接收中斷函式了,但是資料丟失的問題仍然存在,又經過一番除錯發現將處理資料函式從接收中斷函式中取出,問題就解決了。然而採用串列埠dma方式時,將處理函式從中斷函式中取出,讀取的資料還是錯誤的。唉,現在...
STM32 串列埠通訊學習
1 初始化gpio。2 中斷和串列埠1配置。3 寫串列埠中斷服務函式。4 寫主函式。不管是初始化gpio口還是定時器,串列埠等等,都需要先進行宣告。gpio inittypedef gpio initstructure usart inittypedef usart initstructure nv...
stm32串列埠通訊
通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...