標題:
電賽源碼資料:STM32風力擺
[打印本頁]
作者:
talerrr
時間:
2018-1-15 14:12
標題:
電賽源碼資料:STM32風力擺
風力擺代碼,直接用
單片機源程序如下:
/*!
* COPYRIGHT NOTICE
* Copyright (c) 2013,山外科技
* All rights reserved.
* 除注明出處外,以下所有內(nèi)容版權(quán)均屬山外科技所有,未經(jīng)允許,不得用于商業(yè)用途,
* 修改內(nèi)容時必須保留山外科技的版權(quán)聲明。
*
* @file main.c
* @brief 山外KL26 平臺主程序
* @author 山外科技
* @version v5.2
* @date 2014-10-26
*/
#include "common.h"
#include "include.h"
#define MOTOR_HZ (20*1000)
#define XOUT ADC0_SE9
#define YOUT ADC0_SE13
#define ZOUT ADC0_SE15
#define Gyro1 ADC0_SE14
#define Gyro2 ADC0_SE12
#define Ang ADC0_SE11
Site_t site_lcd;
uint16 x,y,z,gyro1,gyro2,ang; //保存ADC轉(zhuǎn)換結(jié)果
//子函數(shù)聲明
void LCD_show_int();//LCD顯示字符
void PIT_IRQHandler(void);//中斷函數(shù)
void move();//移動
void main()
{
//陀螺儀初始化
adc_init(XOUT);
adc_init(YOUT);
adc_init(ZOUT);
adc_init(Gyro2); //角加速度 Angular2
adc_init(Gyro1); //角加速度 Angular1
adc_init(Ang);
//LCD初始化
LCD_init();
LCD_show_int();
//初始化 電機 PWM
tpm_pwm_init(TPM0, TPM_CH0,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH1,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH4,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH5,MOTOR_HZ,100);
gpio_init(PTC12,GPO,0);
/********************************開PIT中斷******************************/
pit_init_ms(PIT0, 10); //初始化PIT0,定時時間為: ??ms
set_vector_handler(PIT_VECTORn ,PIT_IRQHandler); //設(shè)置PIT0的中斷服務(wù)函數(shù)為 PIT_IRQHandler
enable_irq (PIT_IRQn); //使能PIT0中斷
while(1)
{
site_lcd.x = 24;
site_lcd.y = 2;
x = adc_once(XOUT,ADC_8bit);
LCD_num_C (site_lcd, x , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
y = adc_once(YOUT,ADC_8bit);
LCD_num_C (site_lcd, y , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
z = adc_once(ZOUT,ADC_8bit);
LCD_num_C (site_lcd, z , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
gyro1 = adc_once(Gyro1,ADC_8bit);
LCD_num_C (site_lcd, gyro1 , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
gyro2 = adc_once(Gyro2,ADC_8bit);
LCD_num_C (site_lcd, gyro2 , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
ang = adc_once(Ang,ADC_8bit);
LCD_num_C (site_lcd, ang , FCOLOUR , BCOLOUR);
}
}
/******************************LCD初始化****************************/
void LCD_show_int()
{
LCD_init();
site_lcd.x = 0;
site_lcd.y = 2;
LCD_str(site_lcd, "X", BLUE, GREEN);
site_lcd.y = 17;
LCD_str(site_lcd, "Y", BLUE, GREEN);
site_lcd.y = 32;
LCD_str(site_lcd, "Z", BLUE, GREEN);
site_lcd.y = 47;
LCD_str(site_lcd, "G1", BLUE, GREEN);
site_lcd.y = 62;
LCD_str(site_lcd, "G2", BLUE, GREEN);
site_lcd.y = 77;
LCD_str(site_lcd, "A", BLUE, GREEN);
site_lcd.y = 92;
LCD_str(site_lcd, "k", BLUE, GREEN);
site_lcd.y = 107;
LCD_str(site_lcd, "dp", BLUE, GREEN);
site_lcd.x=68;
site_lcd.y = 2;
LCD_str(site_lcd, "wp", BLUE, GREEN);//位置PD
site_lcd.y = 17;
LCD_str(site_lcd, "wd", BLUE, GREEN);
site_lcd.y = 32;
LCD_str(site_lcd, "zl", BLUE, GREEN);//速度
site_lcd.y = 47;
LCD_str(site_lcd, "sp", BLUE, GREEN);
site_lcd.y = 62;
LCD_str(site_lcd, "h1", BLUE, GREEN);//環(huán)島
site_lcd.y = 77;
LCD_str(site_lcd, "h2", BLUE, GREEN);
site_lcd.y = 92;
LCD_str(site_lcd, "h3", BLUE, GREEN);
site_lcd.y = 107;
LCD_str(site_lcd, "D", BLUE, GREEN);
}
void PIT_IRQHandler(void)
{
//PIT0 和 PIT1 共用相同中斷號,所以兩者都共用相同中斷函數(shù),需要根據(jù)標志位來判斷是由哪個PIT觸發(fā)中斷
if(PIT_TFLG(PIT0) == 1 ) //判斷是否 PIT0 進入中斷
{
move();
PIT_Flag_Clear(PIT0); //清中斷標志位
}
}
void move()
{
tpm_pwm_duty(TPM0, TPM_CH0,70);
tpm_pwm_duty(TPM0, TPM_CH1,70);
tpm_pwm_duty(TPM0, TPM_CH4,70);
tpm_pwm_duty(TPM0, TPM_CH5,70);
}
復(fù)制代碼
所有資料51hei提供下載:
風力擺.rar
(854.08 KB, 下載次數(shù): 37)
2018-1-15 17:55 上傳
點擊文件名下載附件
風力擺代碼
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1