推薦閱讀最新更新時間:2025-04-23 19:32
STM32固件庫3.3版本在STM3210e-eval開發板上的移植
首先建立工程,我習慣性在工程文件夾下建立以下幾個文件夾,分別放不同的文件,以區別不同文件的不同作用,方便尋找和移植。如下: 在PROJECT文件夾下建立工程項目,啟動keil,開始建立工程。 注意建立在PROJECT文件夾下。 隨便起個名字,我起的名字是MDK,建立后,會提示你選擇器件型號 我的器件如上圖,所以選擇。確定后會詢問你是否加入啟動文件。我們用stm32的固件庫,所以不用mdk的,選擇否。 下面配置工程的選項option,右鍵點Target會看到Options。 以下是各個選項卡的配置內容。 這里注意的是在output選項卡里要選擇目標文件存放的位置,
[單片機]
STM32固件庫使用USART
1.USART的配置 (1)關鍵結構體 GPIO_InitTypeDef USART_InitTypeDef NVIC_InitTypeDef//用于接收的中斷 1.1USART的TX在PA9,RX在PA10. 2.時鐘線 2.1 USART時鐘掛載在APB2上 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//配時鐘 3.代碼段 3.1(單發送) void usart_init(void){ GPIO_InitTypeDef gpio_
[單片機]
STM32調試筆記之USART-波特率
設計了一個串口通信電路:CPU 接 光電隔離IC 再接MAX3232;調試時發現串口助手里一直是亂碼,而且示波器測得的波形也老是抓不到波形(不怪示波器,怪我水平太低了。。。);浪費了一個晚上時間,后來請同事幫忙,他幫我打開了串口助手中的“HEX顯示”(新技能get),這樣就能看串口發出來的實際二進制數據是什么了;這個時候他一看數據結果,和我實際發送的明顯不一樣,一下就懷疑到了波特率的問題;波特率改小之后,問題完美解決。 網上關于比特率和波特率的描述如下: 比特率=波特率X單個調制狀態對應的二進制位數;即,兩相調制(單個調制狀態對應1個二進制位)的比特率等于波特率;四相調制(單個調制狀態對應2個二進制位)的比特率為波特率的兩倍;
[單片機]
STM32串口USART用法的進階(HAL庫版本)
基礎發送: uint8_t ch=0xAb;//1 uint8_t aRxBuffer = hello GKoSonrn ;//2 HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);//3 HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 10,0xFFFF);//4 此后不再討論發送,畢竟這個不是重難點,接受才是。 基礎接受: //HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);//可以發也可以不發 //HA
[單片機]
STM32(RFID)階段一:添加串口USART2,修改中斷接收協議
因學校比賽原因接觸到RFID技術,并結合STM32單片機開發一卡通系統。由于需要和RFID讀寫器通信,以及上位機軟件通信,所以添加USART2串口,并根據RFID數據包改寫中斷接收協議。資料支持:《不完全手冊》《中文手冊》端口通用與復用,APB1外設,串口寄存器,中斷配置 階段一:demo程序功能:通過串口USART2接收數據包,并把數據再發回去。RFID型號M3650A-HA 數據包第二個數據為數據包的長度,使用str接收長度,USART_RX_STA bit15置1 表示接收結束。 上代碼 void uart_init(u32 bound){ GPIO_InitTypeDef GPIO_InitStructure
[單片機]
STM32庫函數實現USART發送數據
參考文件:STM32固件庫使用手冊的中文翻譯版.pdf 如圖1 我們先把USART初始化函數添加到主函數,如圖二 包括Baudrate,Word Length,Stop Bit,Parity,Hardware Flow Control(硬件流控制),Usart Mode; UE使能,使能串口外設,如圖3 3.串口初始化,串口外設使能之后,就要發送數據了如圖4; 4.發送完成標志位函數,如圖5; 程序1 實現功能代碼如下 /************************************************ 劉凱教你學STM32F103 第20講 軟件仿真,庫函數實現USART數據發送 2
[單片機]
stm32的USART_IT_TXE和USART_IT_TC
一般來說,串口的發送中斷傳輸數據,對于我目前的應用來說,應用的要求并不是很高,因此,因此就一直沒有對其進行一個比較好的實驗與認識。然而,在一次串口程序升級(IAP)升級實驗中,發現有人使用了這個發送中斷方式進行的,所以特別的進行了一個個步驟的實驗來進一步知道其運行機理。 首先,串口發送數據,可以使用的方式有: 1、 發送一個數據,然后讀取USART_IT_TXE或者USART_IT_TC寄存器的狀態。 2、 使用串口發送中斷 3、 使用dma發送完成中斷 在效率上,肯定是3比較好。其次是2。 網上關于USART_IT_TXE和USART_IT_TC是怎么個用法,各家有各家的言論,在我這里只通過實驗來了解
[單片機]
[STM32] 關于USART接收中斷的BUG和注意事項
今天在使用USART模塊,遇到了一些問題并解決了,于是發貼共享。 問題描述: 在使用USART做串口通訊時,我只把接收中斷打開,并設置搶占優先級為最低一個級別,而接收中斷上一個優先級處理事情比較多,可能占用了2ms時間。當我使用9600波特率往下位機發送數據,速度非常快,就是一直按回車發!問題就出來,不到1分鐘時間,通訊沒有反應了。USART配置代碼如下: void uart_config(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = UART_GetBaud(BaudRate); USART_In
[單片機]