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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7344|回復: 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)



回復

使用道具 舉報

ID:598076 發表于 2019-8-8 23:01 | 顯示全部樓層
樓主大大,這個把這些代碼加到F4編好的代碼中就能適合F1用嘛?
回復

使用道具 舉報

ID:508674 發表于 2019-10-9 17:22 | 顯示全部樓層
謝謝,參考下
回復

使用道具 舉報

ID:445069 發表于 2019-10-10 08:56 | 顯示全部樓層
移植的話,主要是解決寄存器映射的問題。
回復

使用道具 舉報

ID:654079 發表于 2019-12-2 10:50 | 顯示全部樓層
老哥,菜雞求幫助啊,能否給個扣扣請教?謝謝
回復

使用道具 舉報

ID:654079 發表于 2019-12-2 10:51 | 顯示全部樓層
老哥,菜雞求幫助啊
回復

使用道具 舉報

ID:520235 發表于 2019-12-31 11:44 | 顯示全部樓層
感謝樓主分享,下載來學習一下!
回復

使用道具 舉報

ID:94079 發表于 2020-1-17 14:22 | 顯示全部樓層
很少的資源哦,謝謝樓主
回復

使用道具 舉報

ID:156302 發表于 2020-1-18 09:34 | 顯示全部樓層

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

使用道具 舉報

ID:156302 發表于 2020-1-28 11:04 | 顯示全部樓層
大佬,我這老卡在加載固件那里,網上發現好多人都是這個問題,請問能怎么解決?就是memcmp函數
回復

使用道具 舉報

ID:160072 發表于 2020-3-1 12:21 | 顯示全部樓層
厲害的大佬 不知道能否移植到103c8t6 我試試
回復

使用道具 舉報

12#
無效樓層,該帖已經被刪除
13#
無效樓層,該帖已經被刪除
ID:161597 發表于 2022-7-17 00:00 | 顯示全部樓層
很不錯,很有參考意義,非常感謝。
回復

使用道具 舉報

ID:1046824 發表于 2023-2-15 17:01 | 顯示全部樓層
最近正在研究這個,作技術儲備。非常感謝分享。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一二三在线 | 97国产精品视频人人做人人爱 | 夜夜摸夜夜操 | 久久视频免费观看 | 久久精品免费 | 凹凸日日摸日日碰夜夜 | 一级毛片黄片 | 久久综合影院 | 人人爽日日躁夜夜躁尤物 | 久久精品性视频 | 欧美日韩三级在线观看 | 男女羞羞视频免费 | 久久国产精品偷 | 99这里只有精品视频 | 国产成人网 | 99精品久久久 | 久久国产精彩视频 | 欧美日韩在线精品 | 日韩一区二区成人 | 欧美中文字幕 | 亚洲视频在线一区 | 九九热re | 国产成人久久 | 免费精品| 日韩免费网站 | 天天操天天干天天爽 | 日本一区二区在线视频 | 91视频中文 | 涩爱av一区二区三区 | 成人精品一区二区三区 | 久久久国产一区二区三区 | 91在线精品视频 | 久久国产精品免费一区二区三区 | 蜜桃特黄a∨片免费观看 | 亚洲视频www | 欧美日韩中文在线 | 国产精品成人品 | 黄网免费 | 亚洲图片一区二区三区 | 亚洲精品一区二区 | 精品亚洲一区二区 |