串口2的配置(一根杜邦線不行糾結了半天)
void USART2_Initialise( u32 bound )
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
/* Enable the USART2 Pins Software Remapping */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Configure USART2 Rx (PA.03) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART2 Tx (PA.02) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Enable the USART2 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_InitStructure.USART_BaudRate = bound;
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_Rx | USART_Mode_Tx;
USART_Init(USART2, &USART_InitStructure);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
USART_Cmd(USART2, ENABLE);
}
原理與串口一相同,只是io口不同,所在總線不同
ADC1的配置
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
io口配置與點亮第一個led燈類似,模擬輸入模式即可
與配置其他功能類似,ADC的配置也是一個結構體變量傳入參數
ADC_InitTypeDef結構體變量名
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );
使能ADC1通道時鐘
RCC_ADCCLKConfig(RCC_PCLK2_Div6); 設置ADC分頻因子 72/6=12M
ADC_DeInit(ADC1);復位ADC
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;ADC工作模式ADC1和ADC2工作在獨立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE;模數轉換在單通道模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;模式轉換工作在單次轉換模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;軟件觸發
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC數據對齊方式
ADC_InitStructure.ADC_NbrOfChannel = 1;順序進行轉換的ADC通道數
ADC_Init(ADC1, &ADC_InitStructure);傳入結構體地址,初始化ADC
ADC_Cmd(ADC1, ENABLE);使能ADC
ADC_ResetCalibration(ADC1);使能復位校準
while(ADC_GetResetCalibrationStatus(ADC1));等待復位校準結束
ADC_StartCalibration(ADC1);開啟AD校準
while(ADC_GetCalibrationStatus(ADC1));等待校準結束
獲取ADC函數傳入參數adc通道號
u16 Get_Adc(u8 ch)
{
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );ADC1,通道1,采樣時間為239.5個周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE);使能指定ADC1軟件轉換啟動功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));等待轉換結束
return ADC_GetConversionValue(ADC1);返回最后一次ADC的轉換結果
ADC通道對應io口如圖
p=adcx;
p=(3.3/4096)*p;
p=p*10000;
v=(int)p;
USART_SendData(USART2,0x76);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,0x3D);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,(48+v/10000));
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,0x2E);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,(48+v%10000/1000));
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,(48+v%10000%1000/100));
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,(48+v%10000%1000%100/10));
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,(48+v%10000%1000%100%10));
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
USART_SendData(USART2,0x0A);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
采集adc以ASCII方式發送給上位機
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);等待發送完成
上一篇:STM32學習筆記-pwm生成-舵機控制
下一篇:STM32學習筆記-配置串口,printf重定向
推薦閱讀
史海拾趣
近年來,Herga公司緊跟智能制造的發展趨勢,大力推動生產線的自動化和智能化升級。公司引入了先進的機器人、自動化設備和智能管理系統,實現了從原材料采購、生產加工到成品檢驗的全流程自動化控制。這一舉措不僅大大提高了生產效率和質量穩定性,還降低了人力成本和運營風險。Herga公司的智能制造實踐為電子行業樹立了典范,也為公司的持續發展注入了新的動力。
在20世紀90年代初,Herga公司憑借其在精密電機技術上的突破,成功研發出一款高效能、低噪音的步進電機,迅速在自動化設備和電子設備市場中脫穎而出。這款電機不僅提高了生產效率,還顯著降低了能耗和噪音水平,贏得了眾多知名電子制造商的青睞。Herga公司借此機會,進一步拓展產品線,逐步確立了在電子行業精密傳動組件領域的領先地位。
Fenfa Electronics Ltd公司自創立之初,就深知技術創新的重要性。在公司成立初期,面對市場上激烈的競爭,Fenfa團隊決定投入大量資源于研發領域。經過數年的不懈努力,公司成功研發出一款具有革命性的電子產品,該產品以其高效能、低能耗和出色的用戶體驗迅速在市場上嶄露頭角。這一技術創新的突破,為Fenfa Electronics Ltd公司贏得了市場的認可,也為公司后續的發展奠定了堅實的基礎。
XXXX年,Bridgelux與Cree公司爆發了一場專利糾紛。Cree公司指控Bridgelux侵犯了其LED專利技術。經過一段時間的激烈爭辯,雙方最終達成了和解協議。Bridgelux同意支付一定的賠償金,并獲得了部分專利的授權。這次糾紛雖然給Bridgelux帶來了一定的經濟損失,但也使其更加注重知識產權保護,提升了自身的技術實力。
GD Rectifiers Ltd在電子行業初期便以其卓越的技術創新能力嶄露頭角。公司在成立之初便專注于電力電子整流器的研發,通過不斷優化電路設計和材料選擇,成功推出了具有高效率和低損耗特性的整流器產品。這一技術創新不僅幫助公司在市場上建立了差異化競爭優勢,還吸引了大量對電力效率有高度要求的客戶。隨著市場需求的不斷增長,GD Rectifiers Ltd逐漸擴大了產品線,涵蓋了更廣泛的應用領域,進一步鞏固了其市場地位。
面對數字化時代的到來,GD Rectifiers Ltd主動擁抱變革,積極推進數字化轉型。公司投入巨資建設了先進的數字化生產管理系統和客戶關系管理系統,實現了生產過程的智能化和透明化。通過數據分析和挖掘技術,公司能夠更準確地把握市場需求和客戶需求的變化趨勢,為產品研發和市場營銷提供有力支持。同時,公司還加強了與供應商和客戶的數字化連接和協作,提高了供應鏈的協同效率和響應速度。數字化轉型的成功實施為GD Rectifiers Ltd注入了新的活力,進一步提升了公司的市場競爭力和行業地位。
地彈的形成: 芯片內部的地和芯片外的PCB地平面之間不可避免的會有一個小電感。這個小電感正是地彈產生的根源,同時,地彈又是與芯片的負載情況密切相關的。下面結合圖介紹一下地彈現象的形成。 簡單的構造如上圖的一個小“場景”,芯片A為 ...… 查看全部問答∨ |
0 引 言 電子研發工程師最常采用的EMI/EMC防范措施不外乎是屏蔽、濾波、接地和布線,但是隨著電子系統的集成化,在考慮成本、質量、功能,又要兼顧產品推出速度的要求下,工程師們必須在設計初始階段就展開EMI/EMC預測分析和設計,避免在研發 ...… 查看全部問答∨ |
沉迷技術的電工,都是些很笨的腦袋。 這是偶的反面教材。偶就是太沉迷這一行了。 世界的多樣性,必須要學習各類/各方面的東西才能在這社會生存。 好比理財,房產,股票,金融,商業營銷,對象心理學,。。。。。 偶就會沉迷在示波器前,仿真器 ...… 查看全部問答∨ |
|
Bor ad co m公司新近推出的第三代高集成度以太網交換芯片架構StrataXGSm與其前兩代產品相比,具有極高的集成度、采用了嵌人式安全技術、增加了IPv6路由功能和無線局域網(WLAN)技術… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 19:59 編輯 距5月21日谷歌聯合索尼、英特爾發布了其智能電視產品僅10天,TCL集團即率先在國內研制成功基于Android操作系統的智能電視。谷歌公司投入巨資開發的GOOGLE TV系統核心特點是其開放性和平臺性, ...… 查看全部問答∨ |
當面交易,本人是在西安上學的研究生,在西安的朋友可以看看! Altera FPGA\\CPLD設計(基礎篇) 王誠、吳繼華、范麗珍、薛寧 人民郵電出版社 原價45.00 現價20.00 8成新 Xilinx ISE 9.X FPGA/CPLD設計指南 薛小剛、葛毅敏 人民郵電出版社 原價45 ...… 查看全部問答∨ |
今天 凌晨 有個小偷 在我3樓的窗外,很厲害的,呵呵,拿紅色燈光的電筒看我家,被我爸發現了,跑了 準備搗鼓個 安防的MCU系統 一般 窗戶移動 可以用 電磁式的 ,人的體溫 用紅外的,還有聲音 方面,等等 ,高級的用 攝像頭 錄像 ...… 查看全部問答∨ |
#include #define uchar unsigned char #define slave 0x02 #define BN 16 uchar idata rbuf[16]; uchar idata tbuf[16]={\"master transmit\"}; void err(void) {SBUF=0xff; while(TI==0);TI=0; } uchar master(uchar addr,uchar comm ...… 查看全部問答∨ |
四年的電子工程畢業后,懷著對電子技術的一腔熱忱到了一家企業的技術研發中心。第一次接觸到實戰項目—電子計價秤,采用帶AD和LCD驅動的NEC的單片機,全部采樣匯編語言,整整看了一個月才算有點入門,至今還記得Firmware師傅的流程圖 ...… 查看全部問答∨ |