资源简介
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交通标志识别
相关资源
- PWM的FPGA实现
- 双闭环可逆直流脉宽PWM调速系统
- FOC矢量控制参考代码
- 用矩阵键盘改变PWM的占空比与频率
- 利用PWM定时器实现蜂鸣器控制
- SPWM波产生STM32F103 DMA
- 基于DSP的单相SPWM逆变器数字化控制技
- 变频器电机用的svpwm程序
- STM8S/L UFQFPN20 PCB封装
- pwm调试加减速
- STM8S软件开发指南
- SPWM逆变器stm32例程及电路图仿真.zip
- 基于STM32cubeMX,STM32F103C8T6的PWM输出实
- 基于51单片机的直流电机PWM调速系统
- MSP430_PWM控制的呼吸灯
- STM32F103单片机输出SPWM波
- IAR环境STM8S003模拟串口
- PWM整流控制技术的在线式UPS
- 原创最全51单片机函数库 IO DAC Timer
- STM32 多通道 不同频率 可变频 pwm输出
- 基于单片机的数字PID控制直流电机P
- stm8s003f3p6点亮六个LED灯IAR工程包
- 单相H桥逆变器移相PWM控制的单片机实
- spwm波正弦波表生成小工具(3款)
- SVPWM源代码,非常好用
- PWM占空可调节verilog例程
- 智能小车pwm调速程序
- TMS320F28069液晶显示可调频率PWM输出
- 基于单片机软件实现直流电机PWM以及
- 使用nrf2401无线遥控车和船等
评论
共有 条评论