串口的配置(以stm32f103c8t6串口1為例)
USART_InitTypeDef chuanko;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
chuanko.USART_BaudRate=9600;
chuanko.USART_WordLength=USART_WordLength_8b;
chuanko.USART_StopBits=USART_StopBits_1;
chuanko.USART_Parity=USART_Parity_No;
chuanko.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
chuanko.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_Init(USART1,&chuanko);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_InitTypeDef串口結構體變量類型
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);打開apb2總線上的串口時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);打開apb2總線上的復用時鐘
chuanko.USART_BaudRate=9600;串口波特率
波特率:模擬線路信號的速率,以波形每秒的振蕩數來衡量。如果數據不壓縮,波特率等于每秒鐘傳輸的數據位數,如果數據進行了壓縮,那么每秒鐘傳輸的數據位數通常大于調制速率,使得交換使用波特和比特/秒偶爾會產生錯誤。
chuanko.USART_WordLength=USART_WordLength_8b;數據位數
chuanko.USART_StopBits=USART_StopBits_1;停止位數
chuanko.USART_Parity=USART_Parity_No;有無奇偶校驗
chuanko.USART_HardwareFlowControl=USART_HardwareFlowControl_None;硬件流控制
chuanko.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;串口模式 發送 接收
USART_Init(USART1,&chuanko);傳入結構體變量地址,配置串口
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);打開串口中斷
USART_Cmd(USART1,ENABLE);使能串口1
USART_ClearFlag(USART1,USART_FLAG_TC);清空標志位
io初始化
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
......;
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
}
}
編寫中斷服務函數,每收到1字節數據進入一次中斷服務函數
USART_ReceiveData(USART1);返回收到的數據
USART_SendData(USART1,數據);發送數據
printf重定向
printf是c語言標準輸入輸出庫中的函數,只需修改它的輸出到串口即可
包含stdio.h重載下面這個函數完成重定義
int fputc(int ch,FILE *f)
{
USART_SendData(USART1,(u8)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return ch;
}
上一篇:STM32學習筆記-ADC采集-串口2發送至上位機
下一篇:STM32學習筆記-定時器中斷
推薦閱讀
史海拾趣
面對不斷變化的市場需求和行業趨勢,Anachip公司始終保持著創新的精神。公司不斷加大研發投入,推出了一系列具有創新性的產品和技術。同時,公司還積極探索新的商業模式和市場機會,為未來發展奠定了堅實的基礎。通過持續創新和努力,Anachip公司有望在電子行業中取得更加輝煌的成就。
這些故事是基于一般性的行業趨勢和企業成長經歷而構建的,旨在展示一個電子行業中公司可能的發展軌跡。在實際情況下,Anachip公司的發展道路可能會有所不同,具體的故事需要依據該公司的真實歷史和業務情況來編寫。
在追求經濟效益的同時,Frequency Devices公司始終不忘履行社會責任。公司積極響應國家環保政策,采用環保材料和生產工藝,減少對環境的影響。同時,公司還致力于可持續發展,通過技術創新和管理優化,不斷提高資源利用效率,降低能耗和排放。這些努力不僅體現了公司的社會責任感,也為公司的長期發展奠定了堅實的基礎。
DMS自創立之初,就致力于電子元器件的技術創新。公司投入大量研發資源,成功開發出一系列高性能、低成本的電子元器件,這些產品迅速在市場上獲得了認可。隨著技術的不斷進步,DMS不斷推出新產品,滿足了客戶日益增長的需求,逐漸在電子行業中樹立了技術領先的形象。
GSI Technology公司成立于1995年3月,總部位于加利福尼亞州的圣何塞(硅谷),自創立之初便專注于提供領先的電信和網絡解決方案。公司采用先進的CMOS工藝技術,如0.25、0.15和0.13微米等,致力于開發低功耗、全功能、高性能的SRAM產品。通過不斷的技術創新和產品優化,GSI Technology逐漸在高性能存儲器市場占據了一席之地,為后續的快速發展奠定了堅實的基礎。
BH Electronics的創立源于創始人李明對電子技術的深厚興趣和敏銳洞察。在20世紀90年代初,電子市場剛剛起步,李明憑借對市場的精準判斷,決定投身于這一新興行業。他帶領一支小團隊,在簡陋的辦公室中開始了艱苦的創業歷程。他們晝夜兼程,研發出了一款具有競爭力的電子元件,成功打開了市場的大門。雖然初期資金匱乏,市場認可度低,但李明和他的團隊憑借堅韌不拔的精神,逐步在市場中站穩了腳跟。
面對海洋環境的獨特挑戰,Contrinex推出了海洋系列傳感器。這些傳感器采用全金屬技術,外殼材質為V4A/AISI 316L不銹鋼,防護等級高達IP68/IP69K,能夠抵御惡劣的海洋環境。同時,該系列傳感器還具備卓越的EMC防護性能,能夠滿足各種海洋應用需求。這一創新產品的推出,進一步鞏固了Contrinex在傳感器行業的領先地位。
下面是我的連接示意圖 : 圖不太清楚,我說下:F2812 通過XA0-XA18連接CPLD,CPLD譯碼啟動多路開關將模擬量送給A/D芯片,同時啟動A/D芯片,然后A/D的數據接到F2812的XD0-XD15上 誰有這樣的C語言程序?謝謝了 &n ...… 查看全部問答∨ |
|
WinCE5.0修改S3C2443LCD驅動,鏈接時出錯,望大家賜教。 大家好~在下有個問題請教。 S3C2443開發板,WinCE5.0更換LCD屏幕,屏幕由320*240改為480*272。 修改驅動時: 修改C:\\WINCE500\\PLATFORM\\SMDK2443\\Src\\Inc\\s3c2443_lcd.h文件將 #d ...… 查看全部問答∨ |
|
#define AT91C_ID_IRQ1 ((unsigned int) 30) // Advanced Interrupt Controller (IRQ1) 我用的是IRQ1,IRQ1定義為上. 那我注冊表中的IRQ添加多少呢? 1E 還是30? 我試了1E不行啊!… 查看全部問答∨ |
程序中的臨界區 InitializeCriticalSection(&(pHWHead->RegCritSec)); .... DeleteCriticalSection(&(pHWHead->RegCritSec)); .... .... EnterCriticalSection(&(pHWHead->RegCritSec)); .... LeaveCriticalSection(&(pHWHea ...… 查看全部問答∨ |
使用stm8s_gpio.c在Raisonance下進行編譯,出現沒法找到stm8s_gpio.c文件的問題。尋找原因,出在下面的語句中,void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins){ GPIOx->ODR &=&n ...… 查看全部問答∨ |
STM8S TIM1_CH4 求助 請問我在OPTION 里設置的 PD7 輸出 TIM1_CH4 功能,我想關閉原來PC4上的TIM1_CH4輸出, 我查了半天手冊沒有看到說明,請問版主主,可以實現嗎?目前的實驗情況是兩個通道的PD7 PC4 同時輸出PWM信號,暈倒,PC4我還想當 ...… 查看全部問答∨ |
#include <stdio.h> main() { void my_print(char *string ); void my_print(char *string ); char string[]="hello world "; my_print(string); my_print1(string); } void my_print(char *string) { &nb ...… 查看全部問答∨ |