STM32嵌入式基础开发06-通用定时器和SPI通讯同步输出(6_SPI_PWM_Veh)

本文档介绍了如何使用STM32F103RET6单片机实现PWM驱动小车电机,并同时通过模拟PS2接口实现实时接收手柄的X/Y轴数据和按键输入。作者详细展示了主程序的实现步骤,包括时钟配置、延时处理、LED控制以及PWM和SPI通信的整合。
摘要由CSDN通过智能技术生成

1 博客内容

      博客内容基于STM32F103 RET6芯片,介绍PWM控制小车电机时同步进行PS2手柄SPI通讯读取数据。

2 主程序(Main.c)

      参考平衡小车之家,通过是IO口模拟PS2的ISPI通信,获取手柄左右遥感X/Y数据。


//================================================
//    名称:  Main.c
//    作者:  Morven_X
//    版本:  1.1
//    编制:  2021/01/28 23:10
//    更新:  ~~
//    功能:  基于STM32F103 RET6芯片,PWM输出的同时增加PS2手柄数据读取
//    简介:  ~~(Keil 5.28)
//    Email:  morven_xie@163.com
//================================================

# 	include "stm32f10x.h"
# 	include "LED1.h"
#	include "Delay.h"
#	include "PWM.h"
#	include "SPI.h"
#	include "VehCtrl.h"


int PS2_LX,PS2_LY,PS2_RX,PS2_RY,PS2_KEY;
int main(void)
{ 
	JTAG_Init();
	
	Stm32_Clock_Init(9);            //=====系统时钟设置
	Delay_Init();                   //=====延时初始化
	LED_Init();                     //===== LED 连接的硬件接口

	uart_init(72,9600);  
	VehCtrl_MotorEn_Int();
	Delay_ms(100);   
	Motor_EN();
	
	PWM_TIM2_Init();                       //TIM2_PWM输出初始化
  PWM_TIM4_Init();  
	
	Delay_ms(1000);                       //=====延时等待初始化稳定
	PS2_Init();										       	//=====ps2驱动端口初始化
	PS2_SetInit();		 							      //=====ps2配置初始化,配置“红绿灯模式”,并选择是否可以修改
	GPIO_SetBits(GPIOC, GPIO_Pin_3);      //设置LED高电平输出
	Delay_ms(100);
	GPIO_ResetBits(GPIOC, GPIO_Pin_3);    //设置LED高电平输出
	Delay_ms(100);
	GPIO_SetBits(GPIOC, GPIO_Pin_3);      //设置LED高电平输出
	while(1)
		{	
		TIM_SetCompare1(TIM2,800);                //设置TIM2  CH1占空比输出  PA0
		TIM_SetCompare2(TIM2,0);                //设置TIM2  CH2占空比输出  PA1

		TIM_SetCompare3(TIM2,1000);                //设置TIM2  CH1占空比输出  PA2
		TIM_SetCompare4(TIM2,0);                //设置TIM2  CH2占空比输出  PA3
		
		TIM_SetCompare1(TIM4,0);                //设置TIM4  CH1占空比输出  PB6
		TIM_SetCompare2(TIM4,1200);                //设置TIM4  CH2占空比输出  PB7
		TIM_SetCompare3(TIM4,0);                //设置TIM4  CH3占空比输出  PB8
		TIM_SetCompare4(TIM4,1500);                //设置TIM4  CH4占空比输出  PB9
			
		PS2_LX=PS2_AnologData(PSS_LX);    
		PS2_LY=PS2_AnologData(PSS_LY);
		PS2_RX=PS2_AnologData(PSS_RX);
		PS2_RY=PS2_AnologData(PSS_RY);
		PS2_KEY=PS2_DataKey();	

		Delay_ms(20);
		} 
}





3 结果输出

      小车车轮可以展示PWM输出控制,同时SPI通信数据如下:
在这里插入图片描述

>> 更多相关内容,点击Morven_Xie博客概览

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值