资源简介
STM8S输出PWM控制模拟舵机+MPU6050陀螺仪信号解码,用于玩具机器人控制

代码片段和文件信息
#include “iostm8s103f3.h“//配置TIM2通道1为PWM输出的过程。
#define bit0 0x01
#define bit1 0x02
#define bit2 0x04
#define bit3 0x08
#define bit4 0x10
#define bit5 0x20
#define bit6 0x40
#define bit7 0x80
#define P 1
#define D 1
int CurPos;//current position 75-187-300 ( 0-90-180°)
unsigned char Re_buf[11]counter=0;//UASRT data
unsigned char isRead=0;
float a[3]w[3]angle[3]T;
void Timer2_Init(void)
{
CLK_ICKR|=0x01; //开启内部HSI
while(!(CLK_ICKR&0x02));//HSI准备就绪
CLK_SWR=0xe1; //HSI为主时钟源
CLK_CKDIVR=0x00; //外设时钟8分频=2MHz
TIM2_PSCR=0x07; //Timer2时钟128分频,计算一次8us
TIM2_ARRH=25; //自动重装的值
TIM2_ARRL=196; //PWM周期为20000us
TIM2_CCER1=bit0 | bit4; // high levelOC1
TIM2_CCMR1=bit3|bit5|bit6; //MODE
TIM2_CCR1H=0x00; //占空比
TIM2_CCR1L=0x00;
TIM2_CCER1 |= 0x10; //开启OC2信号输出脚
TIM2_CCMR2 = 0x60; //PWM1模式
TIM2_CCMR2 |= 0x08; //输出比较2预装载使能
TIM2_CCR2H=0x00; //占空比
TIM2_CCR2L=0x00;
TIM2_IER=0x00; //更新中断使能
TIM2_CR1=bit0; //enable counter
}
void GPIO_Init(void)
{
PB_DDR|=0x20;
PB_CR1|=0x20;
PB_CR2|=0x00;
}
void ServoPosition(int pos)//position 40 75-187-300 2400 0 means no torque
{
TIM2_CCR1H=pos/256; //占空比
TIM2_CCR1L=pos%256;
}
void ServoPT(int posint time)//time about 10
{
int kijd;
if(CurPos>pos)
{
d=CurPos-pos;
for(k=0;k {
ServoPosition(--CurPos);
for(i=0;i for(j=0;j<5000;j++);
}
}
else
{
d=pos-CurPos;
for(k=0;k {
ServoPosition(++CurPos);
for(i=0;i for(j=0;j<5000;j++);
}
}
}
void StopRotate()
{
TIM2_CCR2H=0; //占空比
TIM2_CCR2L=0;
}
void RotateClockwise()
{
TIM2_CCR2H=0; //占空比
TIM2_CCR2L=50;
}
void RotaetClockwiseTime(int t)//rotate clockwisely with given time(no unit)
{
int ijk;
for(i=0;i for(j=0;j<500;j++)
{
StopRotate();
for(k=0;k<4;k++);
RotateClockwise();
for(k=0;k<4;k++);
}
StopRotate();
}
void RotateCntrClockwise()
{
TIM2_CCR2H=600/256; //占空比
TIM2_CCR2L=600%256;
}
void RotateTo0()
{
TIM2_CCR2H=0; //占空比
TIM2_CCR2L=187;
}
void Init_UART1(void)//Baud Rate 9600
{
UART1_CR1=0x00;
UART1_CR2=0x00;
UART1_CR3=0x00;
// 设置波特率,必须注意以下几点:
// (1) 必须先写BRR2
// (2) BRR1存放的是分频系数的第11位到第4位,
// (3) BRR2存放的是分频系数的第15到12位,和第3到0位
// 例如对于波特率位9600时,分频系数=2000000/9600=208
// 对应的十六进制数为00D0,BBR1=0DBBR2=00
UART1_BRR2=0x00;
UART1_BRR1=0x0d;
UART1_CR2=0x2c;//允许接收,发送,开接收中断 *asm(“rim“);开中断,sim为关中断
}
void UART1_sendchar(unsigned char c)
{
while((UART1_SR & 0x80)==0x00);
UART1_DR=c;
}
#pragma vector= UART1_R_OR_vector//0x19
__interrupt void UART1_R_OR_IRQHandler(void)
{
Re_buf[counter]=UART1_DR;//不同单片机略有差异
if((counter==0)&&(Re_buf[0]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-08-06 14:29 rolbot-stm8\
目录 0 2015-07-17 09:34 rolbot-stm8\Debug\
目录 0 2015-08-06 14:29 rolbot-stm8\Debug\Exe\
文件 5422 2015-08-06 14:29 rolbot-stm8\Debug\Exe\rolbot.hex
文件 41360 2015-08-06 14:29 rolbot-stm8\Debug\Exe\rolbot.out
目录 0 2015-08-06 14:29 rolbot-stm8\Debug\List\
文件 14282 2015-08-06 14:29 rolbot-stm8\Debug\List\main.lst
文件 16832 2015-08-06 14:29 rolbot-stm8\Debug\List\rolbot.map
目录 0 2015-08-06 14:29 rolbot-stm8\Debug\Obj\
文件 48970 2015-08-06 14:29 rolbot-stm8\Debug\Obj\main.o
文件 510 2015-08-06 14:29 rolbot-stm8\Debug\Obj\main.pbi
文件 141 2015-08-06 14:29 rolbot-stm8\Debug\Obj\rolbot.pbd
文件 5562 2015-08-05 09:34 rolbot-stm8\code backup.txt
文件 6176 2015-08-06 14:29 rolbot-stm8\main.c
文件 2306 2015-08-06 14:29 rolbot-stm8\rolbot.dep
文件 10282 2015-07-18 16:03 rolbot-stm8\rolbot.ewd
文件 41353 2015-07-18 16:14 rolbot-stm8\rolbot.ewp
文件 160 2015-07-17 10:25 rolbot-stm8\rolbot.eww
目录 0 2015-07-17 11:50 rolbot-stm8\settings\
文件 1954 2015-08-06 10:36 rolbot-stm8\settings\rolbot.cspy.bat
文件 5273 2015-08-05 21:48 rolbot-stm8\settings\rolbot.dbgdt
文件 714 2015-08-05 21:48 rolbot-stm8\settings\rolbot.dni
文件 3137 2015-08-06 14:29 rolbot-stm8\settings\rolbot.wsdt
- 上一篇:图片从本地上传服务端
- 下一篇:基于GTSRB数据集CNN交通标志识别
相关资源
- STM8S代码例程
- 51单片机PWM程序,占空比、周期可调整
- SG3525频率PWM控制均可调模块
- STM8S SX1278 项目和源代码
- STM8S003 红外遥控
- 基于ARM7 PWM定时器的图像传感器时序信
- STM8S例程,基于IAR下的STM8S例程
- 电力电子技术(第4版)_王兆安_带目
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- 基于STM8的HT1621B显示驱动程序
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
- 说说PWM脉宽调制原理
- 以单片机AT89S52、光电脉宽调制器芯片
- STM32F103系列PWM输出应用之纸短情长音
- 基于FPGA的SVPWM实现方法
- pwm控制驱动直流电机 可调速 可调转的
- 可控硅调光,PWM调光,0-10V调光哪个更
- 一种基于SG3525A的PWM型开关稳压电源设
- 基于PIC单片机产生SPWM信号控制逆变桥
- 三相PWM整流器电压环H_∞鲁棒控制
- SVPWM的原理及法则推导和控制算法详解
- 132kW双PWM变频器电力电缆选型设计
评论
共有 条评论