www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 0. 準(zhǔn)備先用st-link連接stm32核心板與PC,用于燒錄St-linkStm323.3V3.3VGNDGNDSWDIODIOSWCLKDCLK再用USB串口板連接,用于查看串口輸出USBStm32RXTX(A9)TXRX(A10)安裝完成驅(qū)動并連接好以后,進(jìn)入設(shè)備管理

0. 準(zhǔn)備

先用st-link連接stm32核心板與PC,用于燒錄

St-link

Stm32

3.3V

3.3V

GND

GND

SWDIO

DIO

SWCLK

DCLK

再用USB串口板連接,用于查看串口輸出

USB

Stm32

RX

TX(A9)

TX

RX(A10)

安裝完成驅(qū)動并連接好以后,進(jìn)入設(shè)備管理器可以看到它們都已被識別。

打開putty.exe,選擇串口連接,用于查看之后的串口輸出。



1. 編寫Cube程序,配置UART0為9600,8n1,上電后向串口輸出“Hello”,在PC上通過串口軟件觀察結(jié)果;

安裝完成并打開CubeMX軟件,選擇New Project,選擇STM32F103C8Tx并點(diǎn)擊ok。



進(jìn)入工程界面以后我們可以看到右邊有芯片的引腳圖,如下所示。我們點(diǎn)擊PA11和PA12,選擇GPIO_Input(后面按鈕用)。然后在左邊的配置中將UART1模式定為Half-Duplex。

在生成代碼前,進(jìn)入工程配置。填寫工程名、保存路徑等,同時選擇IDE為MDK-ARM V5。



設(shè)置完成后點(diǎn)擊生成代碼。注意如果沒安裝庫文件的話會提示下載,但通過軟件的自動更新速度無比的慢,而且經(jīng)常下一半會掛,所以可以在網(wǎng)絡(luò)上下載后自助導(dǎo)入。

生成代碼后彈出如下對話框,選擇open。



進(jìn)入keil5以后可以看到我們的工程文件目錄如左欄所示。注意打開前會彈出Pack installer下載對應(yīng)的編程工具,選擇stm32f1xx系列即可。下載有點(diǎn)慢,可以自己下載或拷貝他人后導(dǎo)入,路徑為 c:/keil v5/ARM/Pack


然后進(jìn)入main.c對UART進(jìn)行配置為9600,8n1,代碼如下所示。


  1. voidUART0_Init(UART_HandleTypeDef*UartHandle){

  2. UartHandle->Instance=USART1;

  3. UartHandle->Init.BaudRate=9600;

  4. UartHandle->Init.WordLength=UART_WORDLENGTH_8B;

  5. UartHandle->Init.StopBits=UART_STOPBITS_1;

  6. UartHandle->Init.Parity=UART_PARITY_NONE;

  7. UartHandle->Init.HwFlowCtl=UART_HWCONTROL_NONE;

  8. UartHandle->Init.Mode=UART_MODE_TX_RX;

  9. HAL_UART_Init(UartHandle);

  10. }


在main函數(shù)中填上下面兩行代碼-


  1. UART_HandleTypeDefUartHandle;

  2. UART0_Init(&UartHandle);



以及輸出hello的代碼


  1. HAL_UART_Transmit(&UartHandle,(uint8_t*)”hellorn”,7,500);


完成代碼后,-準(zhǔn)備編譯。選擇flash-設(shè)置,進(jìn)入Utilities標(biāo)簽,選擇settings,配置如下:



然后F7編譯完成后將程序燒錄至核心板,按一下板子上的reset開關(guān)就可以在putty看到串口輸出了。



2. 通過面包板在PA11和PA12各連接一個按鈕開關(guān)到地;



3. 編寫Cube程序,配置PA11和PA12為內(nèi)部上拉到輸入模式,在main()函數(shù)循環(huán)檢測PA11按鈕按下,并在按鈕按下時 在串口輸出“Pressed”;

可以在CubeMX中圖形化地更改引腳設(shè)置,也可以直接在代碼中修改:


  1. voidMX_GPIO_Init(void)

  2. {

  3. ……

  4. GPIO_InitStruct.Mode=GPIO_MODE_INPUT;

  5. GPIO_InitStruct.Pull=GPIO_PULLUP;

  6. ……

  7. }

在while(1)中添加代碼,循環(huán)檢測并輸出


  1. ……

  2. if(!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_11))

  3. HAL_UART_Transmit(&UartHandle,(uint8_t*)”Pressedrn”,9,500);

  4. else

  5. HAL_UART_Transmit(&UartHandle,(uint8_t*)”Notpressedrn”,13,500);

  6. ……


輸出如圖



4. 編寫Cube程序,配置PA12下降沿觸發(fā)中斷,程序中設(shè)置兩個全局變量,一個為計數(shù)器,一個為標(biāo)識。當(dāng)中斷觸發(fā) 時,計數(shù)器加1,并設(shè)置標(biāo)識。

在主循環(huán)中判斷標(biāo)識,如果標(biāo)識置位則清除標(biāo)識并通過串口輸出計數(shù)值;

在GPIO的init函數(shù)中為PIN12設(shè)置下降沿中斷,并設(shè)置優(yōu)先級。


  1. GPIO_InitStruct.Pin=GPIO_PIN_12;

  2. GPIO_InitStruct.Mode=GPIO_MODE_INPUT;

  3. GPIO_InitStruct.Pull=GPIO_PULLUP;

  4. GPIO_InitStruct.Mode=GPIO_MODE_IT_FALLING;

  5. HAL_NVIC_SetPriority(EXTI15_10_IRQn,0,0);

  6. HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);

  7. HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);


PA12引腳的下降沿觸發(fā)將會觸發(fā)中斷,進(jìn)入函數(shù)EXTI15_10_IRQHandler,此時在函數(shù)中調(diào)用HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12)表示查看PA12的值,如果符合條件,則觸發(fā)HAL_GPIO_EXTI_Callback函數(shù)。代碼如下


  1. voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin){

  2. if(GPIO_Pin==GPIO_PIN_12){

  3. PA12flag=1;

  4. PA12cnt++;

  5. }else{

  6. UNUSED(GPIO_Pin);

  7. }

  8. }


在main函數(shù)的while循環(huán)中添加代碼:


  1. if(PA12flag==1){

  2. PA12flag=0;

  3. size=sprint(str,”Count:%drn”,PA12cnt);

  4. HAL_UART_Transmit(&UartHandle,(uint8_t*)str,size,500);

  5. }




5. 編寫Cube程序,開啟定時器為200ms中斷一次,中斷觸發(fā)時設(shè)置標(biāo)識,主循環(huán)根據(jù)這個標(biāo)識來做串口輸出(取消4 的串口輸出);

使用TIM3定時器,如果不是CUBEMX生成代碼的話記得添加頭文件引用。

添加init函數(shù):


  1. voidTIM_Init(){

  2. TIM_Handle.Instance=TIM3;

  3. TIM_Handle.Init.Prescaler=8000;

  4. TIM_Handle.Init.CounterMode=TIM_COUNTERMODE_UP;

  5. TIM_Handle.Init.Period=199;

  6. TIM_Handle.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;

  7. HAL_TIM_Base_Init(&TIM_Handle);

  8. sClockSourceConfig.ClockSource=TIM_CLOCKSOURCE_INTERNAL;//設(shè)置時鐘源為內(nèi)部時鐘

  9. HAL_TIM_ConfigClockSource(&TIM_Handle,&sClockSourceConfig);

  10. sMasterConfig.MasterOutputTrigger=TIM_TRGO_RESET;//設(shè)置復(fù)位模式,發(fā)生觸發(fā)輸入事件時計數(shù)器和預(yù)分頻器能重新初始化

  11. sMasterConfig.MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE;

  12. HAL_TIMEx_MasterConfigSynchronization(&TIM_Handle,&sMasterConfig);

  13. HAL_NVIC_SetPriority(TIM3_IRQn,0,0);//設(shè)置優(yōu)先級

  14. HAL_NVIC_EnableIRQ(TIM3_IRQn);enable中斷向量表處理

  15. }


和之前設(shè)置的中斷一樣需要覆寫中斷觸發(fā)函數(shù)TIM3_IRQHandler,而后在其中對時鐘進(jìn)行判斷后觸發(fā)HAL_TIM_PeriodElapsedCallback。并在callback中實(shí)現(xiàn)操作。


  1. TIM_HandleTypeDefTIM_Handle;

  2. TIM_ClockConfigTypeDefsClockSourceConfig;

  3. TIM_MasterConfigTypeDefsMasterConfig;

  4. intTIMflag=0,PA12flag=0;

  5. intTIMcnt=0,PA12cnt=0,totalcnt=0;

  6. voidTIM3_IRQHandler(void){

  7. HAL_TIM_IRQHandler(&TIM_Handle);

  8. }

  9. voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){

  10. TIMflag=1;

  11. TIMcnt++;

  12. }

6. 編寫完整的碼表程序,PA12的按鈕表示車輪轉(zhuǎn)了一圈,通過計數(shù)器可以得到里程,通過定時器中斷得到的時間可以計算出速度;PA11的按鈕切換模式,模式一在串口輸出里程,模式二在串口輸出速度。

在main函數(shù)中實(shí)現(xiàn)碼表程序:

  1. while(1)

  2. {

  3. /*USERCODEENDWHILE*/

  4. /*USERCODEBEGIN3*/

  5. if(TIMflag==1){

  6. TIMflag=0;

  7. if(TIMcnt==5){每五個周期輸出一次

  8. speed=2*PA12cnt/1;//五個周期為1秒,車輪周長2米

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Sept. 8, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NVIDIA(英偉達(dá)) Blackwell平臺規(guī)?;鲐洠约氨泵繡SP業(yè)者持續(xù)擴(kuò)大布局General Server(通用型...

關(guān)鍵字: SSD DDR4 服務(wù)器

Sept. 4, 2025 ---- Apple(蘋果)即將發(fā)布iPhone 17、iPhone 17 Air(暫名)、iPhone 17 Pro及Pro Max四款旗艦新機(jī),除了外觀辨識度升級,處理器性能、散熱和拍攝功...

關(guān)鍵字: iPhone 16 A19處理器 折疊機(jī)

Sept. 3, 2025 ---- 根據(jù)TrendForce集邦咨詢最新發(fā)布的《2025近眼顯示市場趨勢與技術(shù)分析》報告,2025年隨著國際品牌陸續(xù)推出AR眼鏡原型,以及Meta預(yù)計在近期發(fā)布AR眼鏡Celeste,市...

關(guān)鍵字: AR眼鏡 OLED

Sept. 2, 2025 ---- TrendForce集邦咨詢表示,2025年第二季DRAM產(chǎn)業(yè)因一般型DRAM (Conventional DRAM)合約價上漲、出貨量顯著增長,加上HBM出貨規(guī)模擴(kuò)張,整體營收為3...

關(guān)鍵字: DRAM 智能手機(jī) ASP

Sept. 1, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季因中國市場消費(fèi)補(bǔ)貼引發(fā)的提前備貨效應(yīng),以及下半年智能手機(jī)、筆電/PC、Server新品所需帶動,整體晶圓代工產(chǎn)能利用率與出貨...

關(guān)鍵字: 晶圓代工 智能手機(jī) 筆電

Aug. 28, 2025 ---- 根據(jù)TrendForce集邦咨詢最新調(diào)查,2025年第二季NAND Flash產(chǎn)業(yè)雖面臨平均銷售價格(ASP)小幅下滑,所幸原廠減產(chǎn)策略緩解供需失衡,疊加中、美兩大市場政策推動,整體...

關(guān)鍵字: NAND Flash SSD AI

Aug. 26, 2025 ---- NVIDIA(英偉達(dá))近日推出的Jetson Thor被視為機(jī)器人的物理智慧核心,以Blackwell GPU、128 GB記憶體堆疊出2070 FP4 TFLOPS AI算力,是前...

關(guān)鍵字: 機(jī)器人 大型語言模型 AI算力

Aug. 21, 2025 ---- 根據(jù)TrendForce集邦咨詢最新液冷產(chǎn)業(yè)研究,隨著NVIDIA GB200 NVL72機(jī)柜式服務(wù)器于2025年放量出貨,云端業(yè)者加速升級AI數(shù)據(jù)中心架構(gòu),促使液冷技術(shù)從早期試點(diǎn)邁...

關(guān)鍵字: AI 數(shù)據(jù)中心 服務(wù)器

除了充電電路外,鋰電池的放電過程也需要保護(hù)。鋰電池的放電電壓不能低于3.0V,否則電池壽命會大幅縮短。為了實(shí)現(xiàn)這一保護(hù),工程師們設(shè)計了DW01芯片與8205 MOS管的電路組合。DW01芯片能夠監(jiān)控鋰電池的放電電壓和電流...

關(guān)鍵字: 鋰電池 電池

在PCB設(shè)計的宏偉藍(lán)圖中,布局與布線規(guī)則猶如精密樂章中的指揮棒,是鑄就電路板卓越性能、堅不可摧的可靠性及經(jīng)濟(jì)高效的制造成本的靈魂所在。恰如一位巧手的園藝師,合理的布局藝術(shù)性地編排著每一寸空間,既削減了布線交織的繁復(fù)迷宮,...

關(guān)鍵字: PCB 電路板
關(guān)閉