基于STM32视频监控系统

目录

一、项目需求

二、原理图

三、上位机界面

四、实物

五、程序

六、说明文档

七、资料清单

 

资料下载地址:基于STM32视频监控系统

一、项目需求

上位机能够实时显示摄像头的画面,并且可以控制摄像头转动

二、原理图

三、上位机界面

上位机提供源码!!!

四、实物

五、程序

部分代码

#include "usart.h"

#include "gpio.h"


_DEF_UART  RS485_Uart1;
UART_HandleTypeDef huart1;



void MX_USART1_UART_Init(void)
{

huart1.Instance = USART1;
  huart1.Init.BaudRate = 9600;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
   // Error_Handler();
  }
  

  
  __HAL_UART_DISABLE_IT(&huart1,UART_IT_TC);
  __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);//使能接收中断
  __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//使能空闲中断
  HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
  HAL_NVIC_EnableIRQ(USART1_IRQn);
  __HAL_UART_CLEAR_IDLEFLAG(&huart1);
  
  
 
}

void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct;
  if(uartHandle->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspInit 0 */

  /* USER CODE END USART1_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_USART1_CLK_ENABLE();
  
    /**USART1 GPIO Configuration    
    PA9     ------> USART1_TX
    PA10     ------> USART1_RX 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    /* Peripheral interrupt init */
    HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
 
  }
}

void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{

  if(uartHandle->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspDeInit 0 */

  /* USER CODE END USART1_MspDeInit 0 */
    /* Peripheral clock disable */
    __HAL_RCC_USART1_CLK_DISABLE();
  
    /**USART1 GPIO Configuration    
    PA9     ------> USART1_TX
    PA10     ------> USART1_RX 
    */
    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);

    HAL_NVIC_DisableIRQ(USART1_IRQn);

  }

} 


void USART1_IRQHandler(void)                	
{ 
	if((__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE) != RESET))
	{ 
		volatile uint32_t temp=0;	
		__HAL_UART_CLEAR_IDLEFLAG(&huart1);
		temp 	= 	huart1.Instance->SR;  
		temp 	= 	huart1.Instance->DR;  
		temp 	=	0; 
		
		if(RS485_Uart1.Cnt >=0)
		{
			RS485_Uart1.RcvFinish	=	1;
			//HAL_NVIC_EnableIRQ (USART1_IRQn );
		}
	}
	if((__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE) != RESET))
	{
		
		
		if(RS485_Uart1.Cnt >= 50) 	RS485_Uart1.Cnt=0;
		
		RS485_Uart1.Buf[RS485_Uart1.Cnt]	=	huart1.Instance->DR;
		RS485_Uart1.Cnt++;
	}
	

	
} 
void Driver_Motor(uint16_t  mode)
{
	int i = 0;
	if(mode == 0)//正传
	{
		for( i = 0 ; i < 256 ; i++)//四节拍为一步,转一圈要256步
		{
			
			MOTOR1 = 1;
			MOTOR2 = 1;
			MOTOR3 = 0;
			MOTOR4 = 0;
			HAL_Delay(1);
			
			

			MOTOR1 = 0;
			MOTOR2 = 1;
			MOTOR3 = 1;
			MOTOR4 = 0;
			HAL_Delay(1);
			
			
		
			MOTOR1 = 0;
			MOTOR2 = 0;
			MOTOR3 = 1;
			MOTOR4 = 1;
			HAL_Delay(1);
			
			
			
		
			MOTOR1 = 1;
			MOTOR2 = 0;
			MOTOR3 = 0;
			MOTOR4 = 1;
			HAL_Delay(1);
		}		
	}
	else//反转
	{
		for( i = 0 ; i < 256 ; i++)//四节拍为一步,转一圈要256步
			{
				
				MOTOR4 = 1;
				MOTOR3 = 1;
				MOTOR2 = 0;
				MOTOR1 = 0;
				HAL_Delay(1);
				
				

				MOTOR4 = 0;
				MOTOR3 = 1;
				MOTOR2 = 1;
				MOTOR1 = 0;
				HAL_Delay(1);
				
				
			
				MOTOR4 = 0;
				MOTOR3 = 0;
				MOTOR2 = 1;
				MOTOR1 = 1;
				HAL_Delay(1);
				
				
				
			
				MOTOR4 = 1;
				MOTOR3 = 0;
				MOTOR2 = 0;
				MOTOR1 = 1;
				HAL_Delay(1);
			}
		
	}
	
}

void Main_Uart(void)
{
	if(RS485_Uart1.RcvFinish == 1)
	{
		RS485_Uart1.RcvFinish = 0;
		RS485_Uart1.Cnt = 0;
		if(RS485_Uart1.Buf[0] == 0x35)//上调
		{
			Driver_Motor(0);
		}
		else if(RS485_Uart1.Buf[0] == 0x36)//下调
		{
			Driver_Motor(1);
		}

	}
	
}

六、说明文档

七、资料清单

  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森旺电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值