久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2773|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用STM32F103讀取MPU605陀螺儀、加速度、角度的數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:55476 發(fā)表于 2020-8-26 21:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1 介紹
     大家從標(biāo)題中來看呢,大家可能會有些困惑,MPU6050只輸出加速度、陀螺儀。沒有角度。這個也是我今天想和大家說的。最近我做了一個傾角項目。老板基于成本考慮希望我能用MPU6050去算出來角度。說實話自己沒接觸這個東西,去搞的時候才知道挺難的,很地方看不懂。然后我去看過了正電原子的MPU6050的解算。但是那個角度的結(jié)果和我想要精度有點差別。無意中呢在淘寶上搜到了一個維特智能的JY61模塊。這個模塊的內(nèi)置的就是MPU6050模塊。這個商家說它的靜態(tài)角度的精度為0.05度、動態(tài)0.1度。這個精度是很符合我的需求。給大家看下這個模塊





這個模塊體積很小巧就15×15×2mm大小。串口通訊用單片機(jī)去獲取數(shù)據(jù)很簡單,相比起直接去獲取MPU6050簡單不知道多少倍了。下面和大家說說我是怎么去用STM32F103讀取JY62陀螺儀、加速度、角度的數(shù)據(jù)。

2 開發(fā)準(zhǔn)備
講程序之前呢,和大家簡單的說說一些硬件、軟件準(zhǔn)備和JY61怎么和STM32F103接線的。

2.1硬件、軟件準(zhǔn)備

硬件:JY61模塊、USB-TTL、STM32F103開發(fā)板、杜邦線。

軟件 :https://pan.baidu.com/s/1SEWmixu4jtUL2HH_3Hcn2g    提取碼:zryo

這個是我的寫的一個 示例代碼大家有興趣的可以看下:https://pan.baidu.com/s/1sXnlT89FTTs5tONLiaPihw

2.2 接線方式

1、使用USB-TTL將STM32F103C8T6與電腦連接通信

2、JY61與STM32F103C8T6使用杜邦線連接。具體接線如下圖所示:

具體接線方式如下:

USB-TTL---------------STM32F103C8T6---------------JY61

        VCC-------------- VCC -------------------------VCC

          TX-------------------RX1(PA10),PA3---------------------------TX

          RX-------------------TX1(PA9),PA2----------------------------RX

        GND------------------GND, GND----------------------------GND

3 程序講解
3.1程序思路講解

好了到大家最關(guān)心的地方了。在這里呢。我先和大家說下。我的整體思路是什么。我直接把我們的main.c函數(shù)放在下面給大家看下。

[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]<string.h>[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]<stdio.h>[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"Main.h"[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"UART1.h"[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"UART2.h"[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"delay.h"[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"JY61.h"[backcolor=inherit !important]#[backcolor=inherit !important]include[backcolor=inherit !important] [backcolor=inherit !important]"DIO.h"[backcolor=inherit !important]struct [backcolor=inherit !important]SAcc                 stcAcc[backcolor=inherit !important];[backcolor=inherit !important]struct [backcolor=inherit !important]SGyro                 stcGyro[backcolor=inherit !important];[backcolor=inherit !important]struct [backcolor=inherit !important]SAngle         stcAngle[backcolor=inherit !important];[backcolor=inherit !important]//CopeSerialData為串口2中斷調(diào)用函數(shù),串口每收到一個數(shù)據(jù),調(diào)用一次這個函數(shù)。[backcolor=inherit !important]void [backcolor=inherit !important]CopeSerial2Data[backcolor=inherit !important]([backcolor=inherit !important]unsigned [backcolor=inherit !important]char ucData[backcolor=inherit !important])[backcolor=inherit !important]{        [backcolor=inherit !important]static [backcolor=inherit !important]unsigned [backcolor=inherit !important]char ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]250[backcolor=inherit !important]][backcolor=inherit !important];        [backcolor=inherit !important]static [backcolor=inherit !important]unsigned [backcolor=inherit !important]char ucRxCnt = [backcolor=inherit !important]0[backcolor=inherit !important];                        [backcolor=inherit !important]LED_REVERSE[backcolor=inherit !important]([backcolor=inherit !important])[backcolor=inherit !important];                                        [backcolor=inherit !important]//接收到數(shù)據(jù),LED燈閃爍一下        ucRxBuffer[backcolor=inherit !important][ucRxCnt++[backcolor=inherit !important]]=ucData[backcolor=inherit !important];        [backcolor=inherit !important]//將收到的數(shù)據(jù)存入緩沖區(qū)中        [backcolor=inherit !important]if [backcolor=inherit !important](ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]0[backcolor=inherit !important]]!=[backcolor=inherit !important]0x55[backcolor=inherit !important]) [backcolor=inherit !important]//數(shù)據(jù)頭不對,則重新開始尋找0x55數(shù)據(jù)頭        [backcolor=inherit !important]{                ucRxCnt=[backcolor=inherit !important]0[backcolor=inherit !important];                [backcolor=inherit !important]return[backcolor=inherit !important];        [backcolor=inherit !important]}        [backcolor=inherit !important]if [backcolor=inherit !important](ucRxCnt<[backcolor=inherit !important]11[backcolor=inherit !important]) [backcolor=inherit !important]{[backcolor=inherit !important]return[backcolor=inherit !important];[backcolor=inherit !important]}[backcolor=inherit !important]//數(shù)據(jù)不滿11個,則返回        [backcolor=inherit !important]else        [backcolor=inherit !important]{                [backcolor=inherit !important]switch[backcolor=inherit !important](ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]1[backcolor=inherit !important]][backcolor=inherit !important])[backcolor=inherit !important]//判斷數(shù)據(jù)是哪種數(shù)據(jù),然后將其拷貝到對應(yīng)的結(jié)構(gòu)體中,有些數(shù)據(jù)包需要通過上位機(jī)打開對應(yīng)的輸出后,才能接收到這個數(shù)據(jù)包的數(shù)據(jù)                [backcolor=inherit !important]{                        [backcolor=inherit !important]//memcpy為編譯器自帶的內(nèi)存拷貝函數(shù),需引用"string.h",將接收緩沖區(qū)的字符拷貝到數(shù)據(jù)結(jié)構(gòu)體里面,從而實現(xiàn)數(shù)據(jù)的解析。                        [backcolor=inherit !important]case [backcolor=inherit !important]0x51:        [backcolor=inherit !important]memcpy[backcolor=inherit !important](&stcAcc[backcolor=inherit !important],&ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]][backcolor=inherit !important],[backcolor=inherit !important]8[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]break[backcolor=inherit !important];                        [backcolor=inherit !important]case [backcolor=inherit !important]0x52:        [backcolor=inherit !important]memcpy[backcolor=inherit !important](&stcGyro[backcolor=inherit !important],&ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]][backcolor=inherit !important],[backcolor=inherit !important]8[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]break[backcolor=inherit !important];                        [backcolor=inherit !important]case [backcolor=inherit !important]0x53:        [backcolor=inherit !important]memcpy[backcolor=inherit !important](&stcAngle[backcolor=inherit !important],&ucRxBuffer[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]][backcolor=inherit !important],[backcolor=inherit !important]8[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]break[backcolor=inherit !important];                [backcolor=inherit !important]}                ucRxCnt=[backcolor=inherit !important]0[backcolor=inherit !important];[backcolor=inherit !important]//清空緩存區(qū)        [backcolor=inherit !important]}[backcolor=inherit !important]}[backcolor=inherit !important]void [backcolor=inherit !important]CopeSerial1Data[backcolor=inherit !important]([backcolor=inherit !important]unsigned [backcolor=inherit !important]char ucData[backcolor=inherit !important])[backcolor=inherit !important]{                [backcolor=inherit !important]UART2_Put_Char[backcolor=inherit !important](ucData[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//轉(zhuǎn)發(fā)串口1收到的數(shù)據(jù)給串口2(JY模塊)[backcolor=inherit !important]}[backcolor=inherit !important]int [backcolor=inherit !important]main[backcolor=inherit !important]([backcolor=inherit !important]void[backcolor=inherit !important])[backcolor=inherit !important]{                          [backcolor=inherit !important]unsigned [backcolor=inherit !important]char i = [backcolor=inherit !important]0[backcolor=inherit !important];        [backcolor=inherit !important]SysTick_init[backcolor=inherit !important]([backcolor=inherit !important]72[backcolor=inherit !important],[backcolor=inherit !important]10[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//設(shè)置時鐘頻率        [backcolor=inherit !important]Initial_UART1[backcolor=inherit !important]([backcolor=inherit !important]9600[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//接PC的串口        [backcolor=inherit !important]Initial_UART2[backcolor=inherit !important]([backcolor=inherit !important]115200[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//接JY61模塊的串口                        [backcolor=inherit !important]LED_ON[backcolor=inherit !important]([backcolor=inherit !important])[backcolor=inherit !important];        [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]1000[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]1000[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//等等JY61初始化完成        [backcolor=inherit !important]while[backcolor=inherit !important]([backcolor=inherit !important]1[backcolor=inherit !important])        [backcolor=inherit !important]{                                        [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]1000[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]//串口接受到的數(shù)據(jù)已經(jīng)拷貝到對應(yīng)的結(jié)構(gòu)體的變量中了,根據(jù)說明書的協(xié)議,以加速度為例 stcAcc.a[0]/32768*16就是X軸的加速度,                [backcolor=inherit !important]printf[backcolor=inherit !important]([backcolor=inherit !important]"Acc:%.3f %.3f %.3f\r\n"[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]0[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]1[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]10[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]//輸出角速度                [backcolor=inherit !important]printf[backcolor=inherit !important]([backcolor=inherit !important]"Gyro:%.3f %.3f %.3f\r\n"[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcGyro[backcolor=inherit !important].w[backcolor=inherit !important][[backcolor=inherit !important]0[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]2000[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcGyro[backcolor=inherit !important].w[backcolor=inherit !important][[backcolor=inherit !important]1[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]2000[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcGyro[backcolor=inherit !important].w[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]2000[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]10[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]//輸出角度                [backcolor=inherit !important]printf[backcolor=inherit !important]([backcolor=inherit !important]"Angle:%.3f %.3f %.3f\r\n"[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAngle[backcolor=inherit !important].Angle[backcolor=inherit !important][[backcolor=inherit !important]0[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]180[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAngle[backcolor=inherit !important].Angle[backcolor=inherit !important][[backcolor=inherit !important]1[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]180[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAngle[backcolor=inherit !important].Angle[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]180[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]10[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//等待傳輸完成        [backcolor=inherit !important]}[backcolor=inherit !important]//主循環(huán)[backcolor=inherit !important]}
     其實一共就分為三個部分。

       第一部分,為串口2中斷調(diào)用函數(shù)CopeSerialData,串口每收到一個數(shù)據(jù),調(diào)用一次這個函數(shù)。把串口2獲取到的數(shù)據(jù)存在ucRxBuffer這個數(shù)組里。然后根據(jù)JY61的通訊協(xié)議(如下圖所示)去做一個數(shù)據(jù)檢驗判斷。判斷完后呢,就到了一個memcpy這個復(fù)制函數(shù)。不懂這個函數(shù)的可以看這個鏈接:運(yùn)動傳感:STM32中的memcpy函數(shù)的使用    我和大家說個結(jié)果。比如說加速度,memcpy函數(shù)就是把ucRxBuffer的數(shù)據(jù)復(fù)制到stcAcc這個結(jié)構(gòu)體里了,剩下的以此類推。到這里這里的第一部分就結(jié)束了。


JY61的通訊協(xié)議


      第二部分,CopeSerial1Data。很簡單的就是轉(zhuǎn)發(fā)串口1收到的數(shù)據(jù)給串口2(JY模塊)。

      第三部分,就是數(shù)據(jù)處理部分了。以加速度為例子。

[backcolor=inherit !important]printf[backcolor=inherit !important]([backcolor=inherit !important]"Acc:%.3f %.3f %.3f\r\n"[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]0[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]1[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important],[backcolor=inherit !important]([backcolor=inherit !important]float[backcolor=inherit !important])stcAcc[backcolor=inherit !important].a[backcolor=inherit !important][[backcolor=inherit !important]2[backcolor=inherit !important]]/[backcolor=inherit !important]32768*[backcolor=inherit !important]16[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]delay_ms[backcolor=inherit !important]([backcolor=inherit !important]10[backcolor=inherit !important])[backcolor=inherit !important];
stcAcc這個前面講了就是復(fù)制結(jié)束的結(jié)果。根據(jù)上面的JY61的通訊協(xié)議。/32768*16這些都是為了把JY61輸出的16進(jìn)制的原始數(shù)據(jù)轉(zhuǎn)成成有符號的10進(jìn)制的數(shù)據(jù)。然后把得到的結(jié)果輸出到串口1。

以上三個部分呢,就是我的主要編程思路了。下面給大家講講一些細(xì)節(jié)方面的函數(shù)。

3.2 關(guān)鍵底層函數(shù)說

    從上面的接線可以看出呢。一共用了32單片機(jī)的兩個UART引腳。一個是UART1這個是把處理過的數(shù)據(jù)發(fā)送到PC端。一個是UART2這個是用來接收J(rèn)Y61傳過來的數(shù)據(jù)。UART2也是使用中斷來接收到數(shù)據(jù)。這些都是在初始化UART2的時候來配置的。前面那部分都是默認(rèn)的串口配置。設(shè)置波特率、數(shù)據(jù)位8位、停止位1、無奇偶檢驗、配置串口模式。最后再初始化USART2。一般都是固定的。后面的USART_ITConfig。就是開啟串口中斷。

[backcolor=inherit !important]void [backcolor=inherit !important]Initial_UART2[backcolor=inherit !important]([backcolor=inherit !important]unsigned [backcolor=inherit !important]long baudrate[backcolor=inherit !important])[backcolor=inherit !important]{         GPIO_InitTypeDef GPIO_InitStructure[backcolor=inherit !important];        USART_InitTypeDef USART_InitStructure[backcolor=inherit !important];        NVIC_InitTypeDef NVIC_InitStructure[backcolor=inherit !important];         [backcolor=inherit !important]RCC_APB1PeriphClockCmd[backcolor=inherit !important](RCC_APB1Periph_USART2 | RCC_APB2Periph_GPIOA[backcolor=inherit !important], ENABLE[backcolor=inherit !important])[backcolor=inherit !important];        GPIO_InitStructure[backcolor=inherit !important].GPIO_Pin = GPIO_Pin_2[backcolor=inherit !important];        GPIO_InitStructure[backcolor=inherit !important].GPIO_Mode = GPIO_Mode_AF_PP[backcolor=inherit !important];        GPIO_InitStructure[backcolor=inherit !important].GPIO_Speed = GPIO_Speed_50MHz[backcolor=inherit !important];        [backcolor=inherit !important]GPIO_Init[backcolor=inherit !important](GPIOA[backcolor=inherit !important], &GPIO_InitStructure[backcolor=inherit !important])[backcolor=inherit !important];            GPIO_InitStructure[backcolor=inherit !important].GPIO_Pin = GPIO_Pin_3[backcolor=inherit !important];        GPIO_InitStructure[backcolor=inherit !important].GPIO_Mode = GPIO_Mode_IN_FLOATING[backcolor=inherit !important];        [backcolor=inherit !important]GPIO_Init[backcolor=inherit !important](GPIOA[backcolor=inherit !important], &GPIO_InitStructure[backcolor=inherit !important])[backcolor=inherit !important];                 USART_InitStructure[backcolor=inherit !important].USART_BaudRate = baudrate[backcolor=inherit !important];        USART_InitStructure[backcolor=inherit !important].USART_WordLength = USART_WordLength_8b[backcolor=inherit !important];        USART_InitStructure[backcolor=inherit !important].USART_StopBits = USART_StopBits_1[backcolor=inherit !important];        USART_InitStructure[backcolor=inherit !important].USART_Parity = USART_Parity_No [backcolor=inherit !important];        USART_InitStructure[backcolor=inherit !important].USART_HardwareFlowControl = USART_HardwareFlowControl_None[backcolor=inherit !important];        USART_InitStructure[backcolor=inherit !important].USART_Mode = USART_Mode_Rx | USART_Mode_Tx[backcolor=inherit !important];        [backcolor=inherit !important]USART_Init[backcolor=inherit !important](USART2[backcolor=inherit !important], &USART_InitStructure[backcolor=inherit !important])[backcolor=inherit !important];         [backcolor=inherit !important]USART_ITConfig[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_TXE[backcolor=inherit !important], DISABLE[backcolor=inherit !important])[backcolor=inherit !important]; [backcolor=inherit !important]//串口2的發(fā)送端TX是不使能的           [backcolor=inherit !important]USART_ITConfig[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_RXNE[backcolor=inherit !important], ENABLE[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//串口2的接收端的RX使能                [backcolor=inherit !important]USART_ClearFlag[backcolor=inherit !important](USART2[backcolor=inherit !important],USART_FLAG_TC[backcolor=inherit !important])[backcolor=inherit !important];                [backcolor=inherit !important]USART_Cmd[backcolor=inherit !important](USART2[backcolor=inherit !important], ENABLE[backcolor=inherit !important])[backcolor=inherit !important];        NVIC_InitStructure[backcolor=inherit !important].NVIC_IRQChannel = USART2_IRQn[backcolor=inherit !important];        NVIC_InitStructure[backcolor=inherit !important].NVIC_IRQChannelPreemptionPriority = [backcolor=inherit !important]1[backcolor=inherit !important];        NVIC_InitStructure[backcolor=inherit !important].NVIC_IRQChannelSubPriority = [backcolor=inherit !important]8[backcolor=inherit !important];        NVIC_InitStructure[backcolor=inherit !important].NVIC_IRQChannelCmd = ENABLE[backcolor=inherit !important];        [backcolor=inherit !important]NVIC_Init[backcolor=inherit !important](&NVIC_InitStructure[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]}       
使能串口中斷后呢。UART2的數(shù)據(jù)都會一個個字節(jié)的往DR寄存器里面寫。就是第一部分調(diào)用的那個中斷函數(shù)CopeSerial2Data。整體來就是給大家介紹下數(shù)據(jù)是怎么來的。底層中斷函數(shù)說明

[backcolor=inherit !important]void [backcolor=inherit !important]USART2_IRQHandler[backcolor=inherit !important]([backcolor=inherit !important]void[backcolor=inherit !important])[backcolor=inherit !important]{  [backcolor=inherit !important]if[backcolor=inherit !important]([backcolor=inherit !important]USART_GetITStatus[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_TXE[backcolor=inherit !important]) != RESET[backcolor=inherit !important])[backcolor=inherit !important]//由于TX中斷被禁止了所以這個if是不會進(jìn)入的。  [backcolor=inherit !important]{       [backcolor=inherit !important]USART_SendData[backcolor=inherit !important](USART2[backcolor=inherit !important], TxBuffer[backcolor=inherit !important][TxCounter++[backcolor=inherit !important]][backcolor=inherit !important])[backcolor=inherit !important];     [backcolor=inherit !important]USART_ClearITPendingBit[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_TXE[backcolor=inherit !important])[backcolor=inherit !important];    [backcolor=inherit !important]if[backcolor=inherit !important](TxCounter == count[backcolor=inherit !important]) [backcolor=inherit !important]USART_ITConfig[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_TXE[backcolor=inherit !important], DISABLE[backcolor=inherit !important])[backcolor=inherit !important];  [backcolor=inherit !important]}        [backcolor=inherit !important]else [backcolor=inherit !important]if[backcolor=inherit !important]([backcolor=inherit !important]USART_GetITStatus[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_RXNE[backcolor=inherit !important]) != RESET[backcolor=inherit !important])[backcolor=inherit !important]//直接進(jìn)入RX的這個中斷  [backcolor=inherit !important]{                [backcolor=inherit !important]CopeSerial2Data[backcolor=inherit !important]([backcolor=inherit !important]([backcolor=inherit !important]unsigned [backcolor=inherit !important]char[backcolor=inherit !important])USART2->DR[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]//把UART2的數(shù)據(jù)給到DR寄存器后呢,再由這個CopeSerial2Data函數(shù)把數(shù)據(jù)給到給出去了                [backcolor=inherit !important]USART_ClearITPendingBit[backcolor=inherit !important](USART2[backcolor=inherit !important], USART_IT_RXNE[backcolor=inherit !important])[backcolor=inherit !important];  [backcolor=inherit !important]}                [backcolor=inherit !important]USART_ClearITPendingBit[backcolor=inherit !important](USART2[backcolor=inherit !important],USART_IT_ORE[backcolor=inherit !important])[backcolor=inherit !important];[backcolor=inherit !important]}



## 6 輸出結(jié)果顯示
在電腦上正確連接好板子,首先打開串口調(diào)試助手,找到相應(yīng)的端口,然后打開串口,注意這里波特率設(shè)置為9600,然后就可以觀察到左邊的窗口有數(shù)據(jù)輸出了。如圖所示:








分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美性极品xxxx做受 | 亚洲欧美综合精品久久成人 | 精产国产伦理一二三区 | 日韩国产高清在线观看 | 宅男伊人 | 小川阿佐美pgd-606在线 | 特黄视频 | 欧美激情视频一区二区三区在线播放 | 日本三级网站在线观看 | 91精品国产色综合久久 | 国产91久久久久久久免费 | 欧美一级片免费看 | 成人亚洲 | 国产精品久久久久久久久免费丝袜 | 成人精品鲁一区一区二区 | 亚洲码欧美码一区二区三区 | 国产一区二区毛片 | 久久88| 一本久久a久久精品亚洲 | 亚洲国产一区在线 | 亚洲天堂中文字幕 | 成年人视频在线免费观看 | 亚洲性综合网 | 国产亚洲一区二区三区在线观看 | 亚洲精品一区二区 | 欧美电影在线观看网站 | 日本免费一区二区三区视频 | 国产成人精品免高潮在线观看 | 国产伦精品一区二区三区精品视频 | 欧美精品一区二区三区在线播放 | 国产91中文 | 日韩蜜桃视频 | 天堂国产 | 人人插人人| 精品国产一区二区三区日日嗨 | 天天综合网天天综合 | 国产高清视频在线播放 | 一级黄色毛片 | 精品视频国产 | 亚洲成人日韩 | 国产乱精品一区二区三区 |