注意事项:
(1)主程序编译会出现缺乏"stm32f10x_lib.h"文件
解决办法:在附件中主程序目录添加附件库"STM32F10x",在target opition中的C/C++选项卡中的include path路径中添加"STM32F10x"路径。
(2)MPU模块必须与STM32主控板共地,也就是说用板载电源供电最好。(我原先用的单独供电模块,结果串口输出一直为零)
主程序和库下载:
STM32-串口输出MPU-6050.zip
(1.86 MB, 售价: 3 E币)
STM32F10x.zip
(140.98 KB)
部分程序代码:完整程序请下载相关附件
- ********************************************************************************
- ** 函数名称 : USART1_Configuration(void)
- ** 函数功能 : 串口1初始化
- ** 输 入 : 无
- ** 输 出 : 无
- ** 返 回 : 无
- ********************************************************************************
- */
- void USART1_Configuration(void)
- {
- USART_InitTypeDef USART_InitStructure;
- USART_ClockInitTypeDef USART_ClockInitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 |RCC_APB2Periph_USART1, ENABLE );
- USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; // 时钟低电平活动
- USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; // 时钟低电平
- USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; // 时钟第二个边沿进行数据捕获
- USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; // 最后一位数据的时钟脉冲不从SCLK输出
- /* Configure the USART1 synchronous paramters */
- USART_ClockInit(USART1, &USART_ClockInitStructure); // 时钟参数初始化设置
-
- USART_InitStructure.USART_BaudRate = 115200; // 波特率为:115200
- USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 8位数据
- USART_InitStructure.USART_StopBits = USART_StopBits_1; // 在帧结尾传输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; // 发送使能+接收使能
- /* Configure USART1 basic and asynchronous paramters */
- USART_Init(USART1, &USART_InitStructure);
-
- /* Enable USART1 */
- USART_ClearFlag(USART1, USART_IT_RXNE); //清中断,以免一启用中断后立即产生中断
- USART_ITConfig(USART1,USART_IT_RXNE, ENABLE); //使能USART1中断源
- USART_Cmd(USART1, ENABLE); //USART1总开关:开启
- }
- /*
- ********************************************************************************
- ** 函数名称 : NVIC_Configuration(void)
- ** 函数功能 : 中断初始化
- ** 输 入 : 无
- ** 输 出 : 无
- ** 返 回 : 无
- ********************************************************************************
- */
- void NVIC_Configuration(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
- NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQChannel;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_Init(&NVIC_InitStructure);
- }
- /*
- ********************************************************************************
- ** 函数名称 : WWDG_Configuration(void)
- ** 函数功能 : 看门狗初始化
- ** 输 入 : 无
- ** 输 出 : 无
- ** 返 回 : 无
- ********************************************************************************
- */
- void WWDG_Configuration(void)
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
- WWDG_SetPrescaler(WWDG_Prescaler_8); // WWDG clock counter = (PCLK1/4096)/8 = 244 Hz (~4 ms)
- WWDG_SetWindowValue(0x41); // Set Window value to 0x41
- WWDG_Enable(0x50); // Enable WWDG and set counter value to 0x7F, WWDG timeout = ~4 ms * 64 = 262 ms
- WWDG_ClearFlag(); // Clear EWI flag
- WWDG_EnableIT(); // Enable EW interrupt
- }
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|