參考文件:STM32固件庫使用手冊的中文翻譯版.pdf
如圖1
我們先把USART初始化函數(shù)添加到主函數(shù),如圖二
包括Baudrate,Word Length,Stop Bit,Parity,Hardware Flow Control(硬件流控制),Usart Mode;UE使能,使能串口外設,如圖3
3.串口初始化,串口外設使能之后,就要發(fā)送數(shù)據(jù)了如圖4;
4.發(fā)送完成標志位函數(shù),如圖5;
程序1 實現(xiàn)功能代碼如下
/************************************************
劉凱教你學STM32F103
第20講
軟件仿真,庫函數(shù)實現(xiàn)USART數(shù)據(jù)發(fā)送
2016年4月24日 10:12:39
程序實現(xiàn)1
**************************************************/
#include "sys.h"
#include "delay.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
int main(void)
{
u8 i,data;
USART_InitTypeDef USART_InitStructure;
RCC_Configuration();
GPIO_Configuration();
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1,ENABLE);
data = 'A';
for(i=0;i<30;i++)
{
USART_SendData(USART1, data);
data++;
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
}
void RCC_Configuration(void)
{
/*---------------使用外部RC晶振----------*/
RCC_DeInit(); //設置時鐘為缺省值
RCC_HSEConfig(RCC_HSE_ON); //使能外部高速晶振
while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);//等待HSE準備就緒
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能指令預取
FLASH_SetLatency(FLASH_Latency_2); //等待2個周期
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK = SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1 = HCLK/2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 72MHZ
RCC_PLLCmd(ENABLE); //Enable PLLCLK
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait PLL is ready
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //SYSCLK = PLLCLK
while(RCC_GetSYSCLKSource()!= 0x08); //Wait PLLCLK as system clock
//---------打開相應外設時鐘--------------------
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能APB2外設的GPIOA的時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //聲明一個結構體變量
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA寄存器
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //選擇
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA寄存器
}
對上面代碼進行優(yōu)化
/************************************************
劉凱教你學STM32F103
第20講
軟件仿真,庫函數(shù)實現(xiàn)USART數(shù)據(jù)發(fā)送
2016年4月24日 10:12:39
程序實現(xiàn)2 對程序1進行優(yōu)化
**************************************************/
#include "sys.h"
#include "delay.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
void USART_Configuration(u32 Baudrate);
int main(void)
{
u8 i,data;
RCC_Configuration();
GPIO_Configuration();
USART_Configuration(9600);
data = 'A';
for(i=0;i<30;i++)
{
USART_SendData(USART1, data);
data++;
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
}
void RCC_Configuration(void)
{
/*---------------使用外部RC晶振----------*/
RCC_DeInit(); //設置時鐘為缺省值
RCC_HSEConfig(RCC_HSE_ON); //使能外部高速晶振
while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);//等待HSE準備就緒
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //使能指令預取
FLASH_SetLatency(FLASH_Latency_2); //等待2個周期
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK = SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1 = HCLK/2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 72MHZ
RCC_PLLCmd(ENABLE); //Enable PLLCLK
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait PLL is ready
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //SYSCLK = PLLCLK
while(RCC_GetSYSCLKSource()!= 0x08); //Wait PLLCLK as system clock
//---------打開相應外設時鐘--------------------
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能APB2外設的GPIOA的時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //聲明一個結構體變量
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管腳頻率為50MHZ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA寄存器
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //選擇
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIOA寄存器
}
void USART_Configuration(u32 Baudrate)
{
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = Baudrate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1,ENABLE);
}
上一篇:stm32發(fā)送16進制的數(shù)組總結
下一篇:stm32使用兩路串口及接收不定長數(shù)據(jù)的實現(xiàn)
推薦閱讀
史海拾趣
AMI Semiconductor,全稱為Analog Mixed-Signal Interface Semiconductor,是一家在模擬、混合信號和接口領域提供集成電路解決方案的公司。以下是關于AMI Semiconductor公司發(fā)展的五個相關故事:
公司成立與初期發(fā)展:AMI Semiconductor公司成立于1966年,總部位于美國愛達荷州普克斯。公司最初專注于生產(chǎn)模擬集成電路和混合信號集成電路,為各種應用領域提供解決方案。在成立初期,AMI Semiconductor致力于技術創(chuàng)新和產(chǎn)品質量,贏得了客戶的信任和認可。
技術創(chuàng)新和產(chǎn)品多樣化:AMI Semiconductor不斷進行技術創(chuàng)新,推出了一系列高性能、高可靠性的集成電路產(chǎn)品。公司的產(chǎn)品涵蓋了模擬信號處理、數(shù)據(jù)轉換、傳感器接口、通信接口等多個領域,廣泛應用于汽車電子、工業(yè)自動化、醫(yī)療設備等行業(yè)。
公司并購與擴張:為了拓展業(yè)務和加強市場競爭力,AMI Semiconductor進行了一系列并購和合并。這些并購使得公司能夠快速擴大規(guī)模、拓展產(chǎn)品線,并進入新的市場領域。例如,2008年,AMI Semiconductor被ON Semiconductor收購,成為其子公司,加強了在模擬和混合信號領域的領先地位。
全球布局與市場拓展:AMI Semiconductor在全球范圍內(nèi)建立了廣泛的銷售網(wǎng)絡和生產(chǎn)基地,實現(xiàn)了全球化發(fā)展戰(zhàn)略。公司在美國、歐洲、亞洲等地設有研發(fā)中心、生產(chǎn)基地和銷售辦事處,為客戶提供及時的技術支持和服務。這種全球布局有助于拓展市場份額,滿足不同地區(qū)客戶的需求。
持續(xù)創(chuàng)新與發(fā)展:AMI Semiconductor持續(xù)致力于技術創(chuàng)新和產(chǎn)品研發(fā),以滿足不斷變化的市場需求。公司不斷投入資金和人力資源,加強與客戶的合作,開發(fā)定制化的解決方案,提升產(chǎn)品性能和競爭力。AMI Semiconductor不斷追求卓越,致力于成為行業(yè)領先的模擬和混合信號集成電路供應商。
這些故事展示了AMI Semiconductor公司從成立初期到如今在技術創(chuàng)新、產(chǎn)品多樣化、并購與擴張、全球布局和持續(xù)發(fā)展等方面取得的重要進展。
對于固態(tài)非易失性精密電位器構成的溫度測量電路,網(wǎng)友可能關心的問題及其回答如下:
- 固態(tài)非易失性精密電位器的工作原理是什么?
- 回答:固態(tài)非易失性精密電位器(如X9C102/103/104/503系列)包含有99個電阻單元的電阻陣列。滑動單元的位置由CS、U/D和INC三個輸入端控制。滑動端的位置可以被存儲在一個非易失性存儲器中,因此在下一次上電工作時可以被重新調(diào)用。
- 這個電位器在溫度測量中是如何應用的?
- 回答:非易失性數(shù)控電位器在溫度測量中的應用主要是通過其構成的記數(shù)式模數(shù)轉換電路來實現(xiàn)的。這種電路能夠將溫度信號轉換為數(shù)字信號,進而進行溫度的測量和記錄。
- 固態(tài)非易失性精密電位器的分辨率是多少?
- 回答:分辨率取決于具體的電位器型號。例如,X9C503(50k Ω)的每個抽頭間的阻值為505 Ω,這意味著其分辨率等于最大的電阻值被99除。
- 這個電位器的工作電壓范圍是多少?
- 回答:工作電壓范圍通常為VCC=3V至5.5V。
- 固態(tài)非易失性精密電位器能否在長時間內(nèi)保存數(shù)據(jù)?
- 回答:是的,所有的Xicor非易失性存儲器都設計成并經(jīng)過測試能夠用于持久地保存數(shù)據(jù)的應用場合。滑動端位置數(shù)據(jù)可保存100年。
- 這個電位器在溫度測量中有什么特點或優(yōu)勢?
- 回答:其特點包括低功耗、高分辨率、非易失性存儲、長時間數(shù)據(jù)保存等。這些特點使得它在溫度測量中具有高精度、高可靠性和長壽命的優(yōu)勢。
- 如何選擇合適的固態(tài)非易失性精密電位器進行溫度測量?
- 回答:在選擇電位器時,需要考慮其工作電壓、電阻范圍、分辨率、功耗以及數(shù)據(jù)保存能力等參數(shù)。同時,還需考慮電路設計的具體需求和限制條件。
以上回答基于參考文章中的相關信息進行整理和總結,旨在解答網(wǎng)友可能關心的問題。
在ARM公司的支持下,Keil公司不斷進行技術創(chuàng)新和產(chǎn)品升級。其中最具代表性的是Keil C51集成開發(fā)環(huán)境的推出。這一產(chǎn)品不僅繼承了Keil PK51的優(yōu)點,還在性能、穩(wěn)定性和易用性等方面進行了大幅提升。Keil C51的推出,極大地滿足了市場對嵌入式系統(tǒng)開發(fā)的需求,也進一步鞏固了Keil公司在行業(yè)內(nèi)的領先地位。
隨著技術的不斷進步和市場的不斷擴大,ARMKEIL Microcontroller Tools公司開始實施全球化戰(zhàn)略。公司不僅在歐洲和美國設立了研發(fā)中心和銷售網(wǎng)絡,還積極開拓亞洲市場,與多個國家和地區(qū)的合作伙伴建立了緊密的合作關系。通過全球化布局和市場拓展,ARMKEIL Microcontroller Tools公司的業(yè)務范圍不斷擴大,品牌影響力也逐漸提升。
這五個故事只是ARMKEIL Microcontroller Tools公司發(fā)展過程中的一部分。實際上,該公司的成長歷程充滿了無數(shù)的挑戰(zhàn)和機遇。正是憑借著對技術的不斷追求和對市場的敏銳洞察,ARMKEIL Microcontroller Tools公司才能在激烈的競爭中脫穎而出,成為嵌入式系統(tǒng)開發(fā)工具領域的佼佼者。
隨著公司規(guī)模的擴大和產(chǎn)品質量的提升,Eby Electro Inc開始尋求拓展國際市場。公司積極參加國際電子產(chǎn)品展覽,與國際知名企業(yè)建立合作關系,將產(chǎn)品銷往全球各地。在國際市場的競爭中,Eby Electro Inc憑借卓越的產(chǎn)品質量和良好的售后服務,贏得了客戶的信賴和好評。同時,公司也積極學習國際先進的管理經(jīng)驗和技術,不斷提升自身的競爭力。
博眾電氣深知人才是企業(yè)發(fā)展的核心力量。因此,公司高度重視人才培養(yǎng)和團隊建設。通過引進優(yōu)秀人才、建立完善的培訓體系、營造良好的企業(yè)文化等措施,博眾電氣成功打造了一支高素質、專業(yè)化的團隊。這支團隊不僅為公司的發(fā)展提供了有力的人才保障,還為公司不斷創(chuàng)新和進步注入了源源不斷的動力。
這五個故事只是博眾電氣發(fā)展起來的冰山一角。在電子行業(yè)的激烈競爭中,博眾電氣憑借技術突破、質量管理體系建設、環(huán)保理念、國際化戰(zhàn)略以及人才培養(yǎng)與團隊建設等舉措,不斷壯大自身實力,逐步成為行業(yè)內(nèi)的佼佼者。未來,博眾電氣將繼續(xù)秉持創(chuàng)新、質量、環(huán)保、國際化和人才的理念,不斷追求卓越,為實現(xiàn)更加輝煌的成就而努力拼搏。
電源噪聲濾波器的基本原理與應用方法 隨著現(xiàn)代科學技術的飛速發(fā)展,電子、電力電子、電氣設備應用越來越廣泛,它們在運行中產(chǎn)生的高密度、寬頻譜的電磁信號充滿整個空間,形成復雜的電磁環(huán)境。復雜的電磁環(huán)境要求電 ...… 查看全部問答∨ |
|
今天無意間看到一個好東東,眼前一亮啊! 來看看他的雞雞呀。。德國鬼子的電子管機器。用的全是猛料呀。15斤的硬木箱子清一色銅鍍鉻箱子配件(包角合頁和鎖扣)箱子看著像是紅木的。原裝東西沒動過的!通電正常,整機耀耀生輝的古董。用了一共大小 ...… 查看全部問答∨ |
|
關于petalinux在Xilinx開發(fā)板上的移植問題 開發(fā)板是Xilinx的ML505,Linux使用的是petalinux-v0.40-final包。在CPU不支持MMU的情況下,petalinux的移植沒有問題,但是當我啟用了MMU后,根文件系統(tǒng)的掛載就出現(xiàn)問題了: VFS: Cannot open root device \"\" or unknown-block(0,0) Please app ...… 查看全部問答∨ |
我往S3C2440上移植ucGUI,做了一次Hello,World的小測試,結果Hello,world可以顯示,但是現(xiàn)實的卻是有倆個,本來應該在左上顯示,但現(xiàn)在是左上也有,左下三分之二屏那也有,很奇怪,不知道哪些地方有問題,望高手解答!!!… 查看全部問答∨ |
調(diào)用CreatFile函數(shù)后,如何根據(jù)其返回值判斷設備當前的狀態(tài)呢? 我在做一個關于USB通信的程序,現(xiàn)在要求在沒有裝驅動或者設備沒有插好的情況下,在上位機的程序中給出提示,該怎么實現(xiàn),請高手指教。能不能通過調(diào)用CreatFile函數(shù)后再用GetLastError函數(shù)得到錯誤代碼來進行區(qū)分呢,我試過,好象錯誤代 ...… 查看全部問答∨ |
電機轉速輸出信號為-2.5V~0V,但ADC只能采集正電壓。 怎么處理? 想找電壓極性轉換芯片的,但是找的基本上都是電源使用的,不能滿足要求。 希望大家能給我一些好的建議。 非常感謝!… 查看全部問答∨ |
YAFFS移植到嵌入式Linux的案例非常多,但移植到其他操作系統(tǒng)卻從來沒見過。 所以想問下各位大蝦,YAFFS能否移植到其他嵌入式操作系統(tǒng)?比如Nucleus Plus?… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 博世新獲國內(nèi)頭部車企座艙域控項目定點
- 首款測量電動汽車電機溫度的傳感器問世,提升對磁鐵的保護以減少稀土的使用
- Arm開發(fā)出計算子系統(tǒng) 以加速汽車設計的下一代AI芯片的開發(fā)
- 福特汽車申請新專利 或實現(xiàn)車庫定向音樂播放
- 泊車場景一定需要超聲波嗎?
- 同星新一代TC1055 Pro開啟車載網(wǎng)絡測試新時代
- 福特汽車申請新專利 或將配備安全卡追蹤系統(tǒng)
- 蘇黎世聯(lián)邦理工學院開發(fā)四足機器人 可與人類對打羽毛球
- 益萊儲參加 Keysight World 2025,助力科技加速創(chuàng)新
- 中國工業(yè)機器人龍頭沖擊港股IPO,覆蓋鋰電池全產(chǎn)業(yè)鏈
- 齊“芯”因“應”海洋保護!聯(lián)芯和應用材料開展凈灘活動
- 臺北國際電腦展:英特爾突破現(xiàn)代計算機極限
- 重慶將打造氫燃料電池汽車全產(chǎn)業(yè)鏈
- 升級iOS 12后微信不再提示新消息怎么辦?10秒解決
- 曲面雙聯(lián)屏幕,搭載新車機系統(tǒng),寶馬全新中控大屏曝光!
- 蘋果美官網(wǎng)上架翻新版 M1 MacBook Air
- 三星GN2傳感器正式發(fā)布了
- Anker 上架 了MagSafe 磁吸充電寶:售價 39.99 美元
- M1 Mac用戶報告SSD過度損耗 或會縮短使用壽命
- 蘋果提交 micro LED 技術相關專利,或解決行業(yè)難題