Stm32串列埠傳送字串資料
ps:把字串分成位元組迴圈傳送
/* *說明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "stm32f10x_crc.h" #include "system_stm32f10x.h" #include "stdio.h" #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) void RCC_Configuration(void); void GPIO_Configuration(void); void USART_Configuration(void); void delay_ms(u16 time); void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data); void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str); int main() { SystemInit(); RCC_Configuration(); GPIO_Configuration(); USART_Configuration(); while(1) { printf("\n傳送的資訊:"); UART_PutStr(USART1, "hello world!"); delay_ms(1000); } } void RCC_Configuration(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //管腳9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //複用推輓輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); //TX初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //管腳10 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); //RX初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;//LED GPIO_Pin_All GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); } void USART_Configuration(void)//串列埠初始化函式 { //串列埠引數初始化 USART_InitTypeDef USART_InitStructure; //串列埠設定恢復預設引數 //初始化引數設定 USART_InitStructure.USART_BaudRate = 9600; //波特率9600 USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字長8位 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;//開啟Rx接收和Tx傳送功能 USART_Init(USART1,&USART_InitStructure); //初始化 USART_Cmd(USART1,ENABLE); //啟動串列埠 } void delay_ms(u16 time) { u16 i=0; while(time--) { i=12000; while(i--); } } int putchar(int c) //putchar函式 { if (c == '\n'){putchar('\r');} //將printf的\n變成\r USART_SendData(USART1, c); //傳送字元 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){} //等待發送結束 return c; //返回值 } void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data) { USART_SendData(USARTx, Data); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){} } void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str) { while (0 != *str) { UART_PutChar(USARTx, *str); str++; } }
相關推薦
Stm32串列埠傳送字串資料
ps:把字串分成位元組迴圈傳送 /* *說明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include "stm32f10x.h" #include "stm32
STM32串列埠傳送資料和接收資料方式總結
之前寫了篇關於ESP8266使用AT指令進行互相通訊的實驗,在寫STM32串列埠接發資料的程式中,覺得有必要將之前學的有關於串列埠方面的使用經歷加以總結。 串列埠傳送資料: 1. 串列埠傳送資料最直接的方式就是標準呼叫庫函式 。 void
RTOS_TINY中實現串列埠傳送字串控制LED
題目內容 在RTOS_TINY作業系統下實現以下目標: 有四個LED,使用AT89S52的4個引腳驅動它們分別以5Hz,8Hz,20Hz,32Hz的頻率閃爍。設使用12MHz的晶振。用串列埠助手,通過傳送 “TURN on 1”,使得LED1持續閃爍,並回顯“LED1 on”;傳送
小蜜蜂微控制器串列埠傳送字串
void UART0_SendString(unsigned char *String, int start, int stop) { int i = 0; if (stop <= start) { stop = start; } for (i = start; i <=
STM32串列埠接收字串並控制LED
串列埠相關配置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Peri
串列埠傳送字串和十六進位制原始碼
/** * @brief USART GPIO 配置,工作引數配置 * @param 無 * @retval 無 */ void USART_Config(void) { GPIO_InitTypeDef GPIO_InitStructure;
Qt中串列埠傳送HEX資料
在lineEdit輸入資料的型別是QString型別,以往我在傳送的時候是ASCII方式傳送,這會兒突然遇到一個是十六進位制傳送/接受的下位機,就需要將QString 轉化為十六進位制,本來直接用toHex進行轉化,但考慮到在輸入的的時候有間隔符之
STM32的串列埠傳送資料(字元,字串,數字.......)(重點)
#include "stm32f10x.h" #include <stdio.h> //下面strlen函式需要此標頭檔案 #include "USART.h" /**********************************************
STM32串列埠通訊中使用printf傳送資料配置方法(開發環境 Keil RVMDK)
出處:STM32串列埠通訊中使用printf傳送資料配置方法(開發環境 Keil RVMDK) http://home.eeworld.com.cn/my/space-uid-338727-blogid-47176.html 在STM32串列埠通訊程式中使用printf傳送資料,非常的方便。
關於RS485通訊中使用STM32串列埠以DMA方式傳送資料丟失位元組的問題
1、開發平臺 計算機作業系統:WIN7 64位; 開發環境:Keil MDK 5.14; MCU:STM32F407ZET6; STM32F4xx韌體庫:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0; 串列埠除錯助手; 2、問題描述 &
初識stm32-----串列埠1的字串與字元的傳送
STM32的串列埠1的字串與字元的傳送,一開始卡在不知道怎麼把字串發出來,參考別人的程式碼之後的程式如下: (雖然最後成功但是還需要努力ヾ(◍°∇°◍)ノ゙) PS:本程式模板用的是正點原子的模板。 主程式: #include "stm32f10x.h" #includ
VB 串列埠傳送,將文字中的字串轉化成16進位制資料傳送
VB寫一個串列埠傳送程式碼,遇到一個問題,如何將文字中的字串轉化成16進位制資料傳送。 Dim bindate(200) As String Dim senddata As String ‘定義輸入字串變
關於arduino通過串列埠傳送到processing的資料混亂(錯誤\顯示不正確)的問題解答
最近的教學中,已經開始使用processing和arduino進行串列埠通訊的互動,使用中發現有的同學遇到了arduino傳送給processing的資料存在顯示不正確,甚至混亂的現象。這裡給予統一解釋。 arduino程式碼完成的工作是將模擬訊號口讀入模擬資料,然後經過map對映為0到
使用python在openwrt下操作串列埠傳送十六進位制資料
#!/usr/bin/python import serial from time import sleep ser = serial.Serial('/dev/ttyS0', 9600, timeout=0.5) print ser.port print ser.baudrate if
菜鳥江濤帶你學最小物聯網系統之模組篇(02)——STM32通過串列埠傳送AT指令控制ESP模組連線伺服器
接著上一篇繼續,這篇部落格我將帶大家使用STM32的串列埠來發送AT指令給ESP模組連線伺服器。當然目前測試使用的是區域網,自己的電腦當伺服器使用。使用TCP連線伺服器,STM32通過ESP12F模組透傳上傳溫溼度資料到伺服器。看下效果圖片 好了,看下主要的實現程式
STM32串列埠列印printf傳送中文亂碼問題
1、首先要確保使用keil程式正確編譯,並且程式經過除錯,已經可以正常傳送英文字元,但是傳送中文字元時亂碼。2、使用記事本開啟main.c檔案(或其他主程式),點選另存為,在右下方選擇編碼方式為ANSI,替換原檔案即可
關於微控制器串列埠傳送時初始傳送的資料第一個總是00的問題解決
在除錯STM8的串列埠時候,串列埠IO初始化,串列埠配置,傳送資料除錯~~ 連線好串列埠線後,發現初始化後傳送的第一個資料總是00,後面的資料才是正常的資料。 折騰了大半天,終於發現了原因了,那就是初始化串列埠後不能馬上傳送資料,要經過一定時間延遲。 問題程式碼如下: &l
串列埠傳送資料查詢方式與中斷方式
微控制器採用中斷或查詢方式使用串列埠,這是根據實際應用的需要確定的,沒有好/壞之分。有時之所以採用查詢方式處理串列埠程式,是因為應用程式不苛刻微控制器的時間資源,採用查詢的方式就能滿足應用的需要,所以沒采用中斷。大量連續的向串列埠傳送資料,就沒有必要使用中斷了,因為微控制器根
FPGA 學習筆記(十二) 如何用串列埠傳送32位資料?
在筆者之前所用的串列埠中,串列埠一次只能傳送資料為8位,這跟串列埠通訊的協議方式有關係。而最近筆者的專案中需要用到一次傳送32位的資料。筆者最開始想到的是32位資料傳送4次。 為了不改動原來的串列埠通訊協議驅動,筆者設計瞭如下發送方式: 設計四個狀態stat
移遠BC95 NB-IoT模組串列埠傳送資料到伺服器
本文適用於對NB-IoT一無所知的小白。目的是通過NB-IoT協議將資料傳送到伺服器端。 現在已有不少NB-IoT模組,本人採用的是移遠的BC95模組。 接線:外接電源供電 串列埠接右下角三個介面,GND