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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7171|回復: 12
打印 上一主題 下一主題
收起左側

移植官方例程STM32F4到F1,基于stm32f103ze+mpu9250通過官方DMP庫串口輸出角度。

  [復制鏈接]
跳轉到指定樓層
樓主
ID:125878 發表于 2019-7-10 10:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
移植官方例程F4到F1,基于stm32f103ze+mpu9250通過官方DMP庫串口輸出角度,感謝眾多開源大佬

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "stdio.h"
  3. #include "UART1.h"
  4. #include "systick.h"
  5. // mpu9250 include files
  6. #include "sys.h"
  7. #include "mpu9250.h"
  8. #include "mpuiic.h"
  9. #include "inv_mpu.h"
  10. #include "inv_mpu_dmp_motion_driver.h"
  11. float Q0,Q1,Q2,Q3;             // 歐拉角
  12. u32 status2=0;
  13. void printf_init()        //printf初始化
  14. {
  15.         GPIO_InitTypeDef GPIO_InitStructure;        //聲明一個結構體變量,用來初始化GPIO
  16.         NVIC_InitTypeDef NVIC_InitStrue;//定義中斷相關結構體
  17.         USART_InitTypeDef  USART_InitStructure;          //串口結構體定義

  18.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);
  19.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2時鐘

  20.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//TX
  21.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  22.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  23.         GPIO_Init(GPIOA,&GPIO_InitStructure);
  24.         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//RX
  25.         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  26.         GPIO_Init(GPIOA,&GPIO_InitStructure);

  27.         USART_InitStructure.USART_BaudRate=115200;   //波特率設置為9600
  28.         USART_InitStructure.USART_WordLength=USART_WordLength_8b;
  29.         USART_InitStructure.USART_StopBits=USART_StopBits_1;
  30.         USART_InitStructure.USART_Parity=USART_Parity_No;
  31.         USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  32.         USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
  33.         USART_Init(USART2,&USART_InitStructure);
  34.         USART_Cmd(USART2, ENABLE);
  35.        
  36.         USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//使能或者失能指定的USART中斷 接收中斷
  37.         USART_ClearFlag(USART2,USART_FLAG_TC);//清除USARTx的待處理標志位
  38.        
  39.   NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;//定義中斷通道
  40.   NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;//開啟中斷通道
  41.   NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;//設定搶占優先級為1
  42.   NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;//設定子優先級為1
  43.   NVIC_Init(&NVIC_InitStrue);//中斷初始化
  44. }
  45. void USART2_IRQHandler(void)//編寫中斷處理函數
  46. {
  47.     u8 res;//無符號字符res   
  48.    if(USART_GetITStatus(USART2,USART_IT_RXNE))//接收數據進入中斷,判斷串口1接收緩存器非空使能為1與否
  49. {
  50.      res= USART_ReceiveData(USART2); //為1,則將串口1的數據給變量
  51.          if(res==0x10)//等待
  52.          {  
  53.                   USART_SendData(USART2,'1');               
  54.                         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
  55.                  USART_SendData(USART2,'0');               
  56.                         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
  57.                  EXTI->IMR |= EXTI_Line0;//使能外部中斷4
  58.                  EXTI->IMR |= EXTI_Line3;//使能外部中斷4
  59.                  EXTI->IMR |= EXTI_Line4;//使能外部中斷4
  60.                  EXTI->IMR |= EXTI_Line5;//使能外部中斷4
  61.                  status2=0;         
  62.          }
  63.    else if(res==0x11)//小孩
  64.          {
  65.      EXTI->IMR &= ~(EXTI_Line0);// 屏蔽外部中斷0
  66.                  EXTI->IMR &= ~(EXTI_Line3);// 屏蔽外部中斷3
  67.                  EXTI->IMR &= ~(EXTI_Line4);// 屏蔽外部中斷4
  68.                  EXTI->IMR &= ~(EXTI_Line5);// 屏蔽外部中斷5
  69.                   status2=1;                         
  70.          }
  71.           else if(res==0x13)//校準
  72.                 {  
  73.                         mpu_dmp_init();
  74.                         if(mpu_dmp_init()==0)
  75.                                 printf("13");
  76.                          while(mpu_dmp_init())
  77.                          {
  78.                                  mpu_dmp_init();
  79.                                  if(mpu_dmp_init()==0)
  80.                                 printf("13");
  81.                          }
  82.                 }
  83.         }
  84. }
  85. void Led_Configuration(void)
  86. {
  87.         GPIO_InitTypeDef GPIO_InitStructure;
  88.        
  89.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB, ENABLE);

  90.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                         //PE5接
  91.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                     //設為推挽輸出模式
  92.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                
  93.         GPIO_Init(GPIOE, &GPIO_InitStructure);                         //初始化外設GPIO
  94.   GPIO_SetBits(GPIOE,GPIO_Pin_5);
  95. }
  96. int main(void)
  97. {
  98.     u8 status;
  99.     float pitch_dmp,roll_dmp,yaw_dmp;             // 歐拉角
  100.            delay_ms(1000);
  101.          delay_ms(1000);
  102.     Initial_UART1(115200);
  103.    Led_Configuration();
  104.     printf_init();       
  105.     delay_ms(1000);
  106.     // MPU9250姿態傳感器初始化
  107.     do{
  108.         status = mpu_dmp_init();
  109.         if(status)
  110.         {
  111.             printf("Initialization--MPU9250 Error!!!\r\n");
  112.         }
  113.     }while(status);
  114.     printf("Initialization--MPU9250 OK!!!\r\n");
  115.     while(1)
  116.     {     status= mpu_mpl_get_data(&pitch_dmp,&roll_dmp,&yaw_dmp);
  117.         //status=mpu_dmp_get_data(&pitch_dmp,&roll_dmp,&yaw_dmp);
  118.         if(!status)
  119.         {
  120.                                         if(status2==1)
  121.                                         {    //printf("pitch:\t\t%8.2f\r\n  roll:\t\t%8.2f\r\n  yaw:\t\t%8.2f\r\n",pitch_dmp,roll_dmp,yaw_dmp);
  122.                                 printf("%.3f|%.3f|%.3f|%.3f|%.1d\n",Q0,Q1,Q2,Q3,GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2));//四元數
  123.           //GPIO_WriteBit(GPIOE, GPIO_Pin_5, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_5))); //引腳取反       
  124.             //delay_ms(10);
  125.         }
  126.         else
  127.         {
  128.            // printf("### Get Eulerian angle failed! ###\r\n");
  129.                                         delay_ms(10);
  130.         }
  131.     }
  132. }

  133. }
  134. int fputc(int ch,FILE *p)
  135. {
  136.         USART_SendData(USART2,(u8)ch);       
  137.         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
  138.         return ch;
  139. }
復制代碼

所有資料51hei提供下載:
MPU9250.7z (441.99 KB, 下載次數: 274)



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

使用道具 舉報

沙發
ID:598076 發表于 2019-8-8 23:01 | 只看該作者
樓主大大,這個把這些代碼加到F4編好的代碼中就能適合F1用嘛?
回復

使用道具 舉報

板凳
ID:508674 發表于 2019-10-9 17:22 | 只看該作者
謝謝,參考下
回復

使用道具 舉報

地板
ID:445069 發表于 2019-10-10 08:56 | 只看該作者
移植的話,主要是解決寄存器映射的問題。
回復

使用道具 舉報

5#
ID:654079 發表于 2019-12-2 10:50 | 只看該作者
老哥,菜雞求幫助啊,能否給個扣扣請教啊?謝謝
回復

使用道具 舉報

6#
ID:654079 發表于 2019-12-2 10:51 | 只看該作者
老哥,菜雞求幫助啊
回復

使用道具 舉報

7#
ID:520235 發表于 2019-12-31 11:44 | 只看該作者
感謝樓主分享,下載來學習一下!
回復

使用道具 舉報

8#
ID:94079 發表于 2020-1-17 14:22 | 只看該作者
很少的資源哦,謝謝樓主
回復

使用道具 舉報

9#
ID:156302 發表于 2020-1-18 09:34 | 只看該作者

很少的資源哦,謝謝樓主
回復

使用道具 舉報

10#
ID:156302 發表于 2020-1-28 11:04 | 只看該作者
大佬,我這老卡在加載固件那里,網上發現好多人都是這個問題,請問能怎么解決?就是memcmp函數
回復

使用道具 舉報

11#
ID:160072 發表于 2020-3-1 12:21 | 只看該作者
厲害的大佬 不知道能否移植到103c8t6 我試試
回復

使用道具 舉報

12#
ID:161597 發表于 2022-7-17 00:00 | 只看該作者
很不錯,很有參考意義,非常感謝。
回復

使用道具 舉報

13#
ID:1046824 發表于 2023-2-15 17:01 | 只看該作者
最近正在研究這個,作技術儲備。非常感謝分享。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 播放一级黄色片 | 人人干人人干人人 | 久久精品网| 99精品国产一区二区三区 | www.日本国产| 欧美老少妇一级特黄一片 | 国产精品欧美一区二区三区不卡 | 国产美女在线看 | 成人亚洲性情网站www在线观看 | 免费成人在线网站 | 亚洲一区 中文字幕 | 日韩一区二区三区在线视频 | 狠狠综合久久av一区二区小说 | 国产精品国产三级国产aⅴ原创 | 国产精品永久免费视频 | 在线亚洲免费视频 | 男人的天堂在线视频 | 欧美成人精品一区二区三区 | 色婷婷综合网 | 91久久久精品国产一区二区蜜臀 | 亚洲欧美日韩一区 | 亚洲 中文 欧美 日韩 在线观看 | 久久99精品久久久 | 一级毛片免费看 | 高清视频一区二区三区 | 国产黄色大片 | 国产精品成人一区二区三区夜夜夜 | www.久久久久久久久久久久 | 国产亚洲精品精品国产亚洲综合 | 日韩在线免费视频 | 操操操av | 亚洲国产精选 | 麻豆av在线| 国产精品3区 | 爱草视频 | 久久久久久免费毛片精品 | 欧美日韩在线免费观看 | 久久99精品久久久97夜夜嗨 | 日韩一区二区三区av | av毛片| 久久免费精品视频 |