希望能幫到人
所有資料51hei提供下載:
風力擺源代碼.rar
(340.51 KB, 下載次數: 16)
2017-10-19 20:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
風力擺的stm32單片機源程序如下:
- /*-------------------------------------------------------------------------------------------
- 風力擺控制系統(8-12)
- 硬件平臺:
- 主控器: STM32F103VET6 64K RAM 512K ROM
- 驅動器: LMD18200T
- 電源: DC +12V
- 軟件平臺:
- 開發環境: RealView MDK-ARM uVision4.10
- C編譯器 : ARMCC
- ASM編譯器:ARMASM
- 連接器: ARMLINK
- 底層驅動: 各個外設驅動程序
-
- 時間: 2015年8月12日
-
- 作者: BoX
- -------------------------------------------------------------------------------------------*/
- #include "stm32f10x.h"
- #include "usart1.h"
- #include "delay.h"
- #include "led.h"
- #include "timer.h"
- #include "motor_control.h"
- #include "motor_pwm.h"
- #include "motor_pid.h"
- #include "stdlib.h"
- #include "indkey.h"
- #include "mpu6050.h"
- #include "ahrs.h"
- #include "math.h"
- #include "usart3.h"
- /*------------------------------------------
- 全局變量
- ------------------------------------------*/
- extern uint8_t Q1_Start;
- extern uint8_t Q2_Start;
- extern uint8_t Q3_Start;
- extern uint8_t Q4_Start;
- extern uint8_t Q5_Start;
- extern uint8_t Q6_Start;
- extern uint8_t CurMode;
- /*-----------------------------------------
- 初始化外設
- ------------------------------------------*/
- void BSP_Init(void)
- {
- DelayInit(); //延時函數初始化
- LED_GPIO_Config(); //LED相關I/O口初始化
- Key_IO_Init(); //按鍵I/O口
- PID_M1_Init(); //初始化M1PID結構體參數
- PID_M2_Init(); //初始化M2PID結構體參數
- M1TypeDef_Init(); //初始化M1結構體參數
- M2TypeDef_Init(); //初始化M2結構體參數
- PWM_Init(); //PWM初始化
- TIM1_Config(200-1,71); /* TIM1 10ms Inturrupt (用于掃描按鍵) */
- TIM5_Config(5000-1,71); /* TIM5 5ms Inturrupt 采樣率200Hz 不能更改*/
- USART1_Config(); //串口1初始化
- USART1_printf(USART1," 系統啟動成功!\r\n");
- USART3_Config(); //串口2初始化
- USART1_printf(USART1,"CLS(0);DS16(6,02,'2015全國大學生電子設計競賽',10);DS16(54,22,'風力擺控制系統',2);\r\n");
- Display_Title(); //顯示標題(通過串口2發送)
- MPU6050_Init(); //MPU6050初始化
- TIM_Cmd(TIM5,ENABLE); //使能TIM5定時器,電機控制都在TIM5完成
- TIM_Cmd(TIM1,ENABLE); //使能TIM1定時器
- }
- /*-----------------------------------------
- 主 函 數
- ------------------------------------------*/
- int main(void)
- {
- BSP_Init(); //初始化所有的外設
- //角度采樣和運動控制都在中斷函數TIM5_IRQHandler()中完成
- while(1) //循環函數,在有按鍵按下時做出相應的操作
- {
- if(Q1_Start == 1)
- {
- CurMode = 1;
- }
- else if(Q2_Start == 1)
- {
- CurMode = 2;
- }
- else if(Q3_Start == 1)
- {
- CurMode = 3;
- }
- else if(Q4_Start == 1)
- {
- CurMode = 4;
- }
- else if(Q5_Start == 1)
- {
- CurMode = 5;
- }
- else if(Q6_Start == 1)
- {
- CurMode = 6;
- }
- else
- {
- CurMode = 0;
- }
- }
- }
-
復制代碼
|