波特率要改為9600
資料的傳輸並非二進位制數,而是 ascii 值
1. 串列埠接收中斷程式的配置(hal庫)
void
uart1_init()
(2)在hal_uart_msplnit 中呼叫 hal_gpio_lnit()來進行相關io口的復用配置,同時不要忘記使能usartx通道,並且配置中斷優先順序。
串列埠接收中中斷優先順序函式配置: hal_nvic_setpriority(usart1_irqn,3,3); //搶占優先順序3,子優先順序3
以及串列埠usartx通道的使能函式:hal_nvic_enableirq(usart1_irqn); //使能usart1中斷通道
串列埠設定的一般步驟:
串列埠時鐘使能,gpio口使能
設定引腳復用
串列埠引數的初始化(這裡將它分離出來放在了函式 void uart1_init() 裡,包括了串列埠使能)
gpio口的初始化設定:要設定模式為復用功能
初始化nvic(優先順序),如果使用中斷就要使能串列埠中斷
例如:
void
hal_uart_mspinit
(uart_handletypedef *huart)
}
(3)編寫中斷服務函式
void
usart1_irqhandler
(void
)
(4)可以呼叫串列埠接收中斷函式:hal_uart_receive_it(&usart1_handler, (u8 *)rdata, 1);
rdata:指的是乙個存放接收大的資料的資料的陣列,可以宣告為:u8 rdata[1];
如果要進行資料的運算或處理,不要忘記是ascii 值,要做x=rdata[0]-『0』;這一步處理才能進行正確運算;
1:是指傳輸資料的大小,此處指的是資料在一位一位的傳輸;
使用串列埠接收中斷函式,在整個資料被一位一位接收直到結束後會開啟中斷,停止繼續傳輸相同的內容。
我這裡使用了數字鍵盤來傳送資料:
在串列埠屏方面我們先要了解prints和printh
prints可以傳送控制項內的值; 而printh則可以傳送十六進製制數
具體我擷取了串列埠hmi指令集上的如圖所示:
我的設計如圖所示:
注意:如果在stm32中遇到**中中斷接受函式是如下圖我標註的,接收中斷收到的資料末尾就需要以0x0d 0x0a結尾,則需要新增printh 0d 0a來傳送兩個十六進製制數。這段**在f429中被注釋了所以串列埠屏中不需要新增 printh 0d 0a 這個了
以下是我所使用的**,實測可用,要注意的是要將串列埠通訊實驗中的 uart.c 原始檔刪去以免產生影響,所以無法使用顯示屏
所以使用 void hal_uart_rxcpltcallback(uart_handletypedef *huart) 這個回饋函式將資料在傳輸到電腦串列埠用原子的 xcom v2.0 軟體來讀取值。
usart2接收串列埠屏資料波特率需要9600
為了統一,在usart1 和 xcom v2.0 中的波特率也改為 9600
需要看一下stm32f429手冊和引腳分布
usart1 : pa9 — pa10
usart2 : pa2 — pa3
#include
"sys.h"
#include
"delay.h"
u8 rdata[1]
; uart_handletypedef usart1_handler;
//uart控制代碼
void
uart_init()
void
hal_uart_mspinit
(uart_handletypedef *huart)
if(huart->instance==usart2)
//如果是串列埠1,進行串列埠1 msp初始化
}void
usart1_irqhandler
(void
)void
usart2_irqhandler
(void
)void
hal_uart_rxcpltcallback
(uart_handletypedef *huart)
}int
main
(void
)
STM32F429與陶晶馳串列埠屏資料傳輸 1
這幾天正好參加2019年電賽國賽,為了節約io口的使用量,開始考慮使用串列埠屏 使用串列埠屏的好處不僅能夠充當顯示屏用,而且還內建了數字鍵盤,無需騰出io口給矩陣鍵盤。我所使用的串列埠屏型號為 tjc4832k035 微控制器型號為 stm32f429 使用正點原子的hal庫 硬體連線 gnd gn...
STM32F429除錯記錄(一)
stm32f429的晶元有兩路can介面 四路串列埠 內部乙太網以及內部dsp處理器等硬體,硬體的豐富程度可見一斑,而且主頻達到180mhz,雖然比a8 a9架構的arm晶元還是差一大截,但是在工業控制上的應用還是比較多的。在程式編寫方面stm32f4系列不管在mdk還是庫函式都有挺大改動,剛著手除...
STM32F429 如何使用SDRAM
關於stm32f429 控制sdram fmc 擴充套件外部sdram 1 原理介紹 為什麼是fmc 不是 fsmc 區別在那裡!stm32f429使用fmc外設來管理擴充套件的儲存器,fmc是flexible memory controller的縮寫,譯為可變儲存控制器。它可以用於驅動包括sram...