使用jetson nano的串口与stm32进行通信

这篇具有很好参考价值的文章主要介绍了使用jetson nano的串口与stm32进行通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先, jetson nano可以跑python, 那就简单了:

import serial as ser

se = ser.Serial("/dev/ttyTHS1", 115200, timeout=1)
# se.open()
se.write("hello 北冥\r".encode("GB2312"))
# se.write(str("hello, 北冥\r\n").encode("GB2312"))
se.close()

端口就是:
使用jetson nano的串口与stm32进行通信,stm32,嵌入式硬件,单片机

使用jetson nano的串口与stm32进行通信,stm32,嵌入式硬件,单片机
GND, 8, 10, 分别接到我STM32F4最小系统板子的UART2:
使用jetson nano的串口与stm32进行通信,stm32,嵌入式硬件,单片机
板子为了方便观察, 就用uart2接收, 用uart1发送, 为啥不用同一个串口呢? 嗯…我乐意…

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint8_t rxBuffer[100];
uint8_t txBuffer[100];
uint8_t rxBytes[100];
uint8_t gotNewByte = 0;
uint8_t rxCounter = 0;
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
	
  HAL_UART_Receive_IT(&huart2, rxBuffer, 4);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(gotNewByte){
			
				// memcpy(txBuffer, rxBuffer, 4);
		
    		HAL_UART_Transmit(&huart1, rxBytes, rxCounter, 1000);
			
			  gotNewByte = 0;
			
			  rxCounter = 0;
		}
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
	
	if(huart == &huart2){
		
		if(rxBuffer[0] != 0x0d){
			
			rxBytes[rxCounter] = rxBuffer[0];
			
			rxCounter++;
						
			 
		}else{
			
			gotNewByte = 1;
			// rxCounter = 0;
		  
		}
		
		HAL_UART_Receive_IT(&huart2, rxBuffer, 1);
			
	}

}
/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

STM32的代码就如上面的, 随便写写就好了.

使用jetson nano的串口与stm32进行通信,stm32,嵌入式硬件,单片机
把UART1的TX接到usb串口上, 然后在jetson上用python运行上面的脚本即可.

不难吧?文章来源地址https://www.toymoban.com/news/detail-662430.html

到了这里,关于使用jetson nano的串口与stm32进行通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【嵌入式知识08】STM32的USART串口通信,给上位机连续发送Hello Windows!

    本文主要介绍串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别,了解\\\"USB/TTL转232\\\"模块的工作原理;并完成一个STM32的USART串口通讯程序。   串口通信(Serial Communication)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。尽管比按字节(byte)的并行通信

    2024年02月13日
    浏览(47)
  • 【Qt上位机与STM32进行串口通信】-2-Qt串口开发

    系列文章目标:Qt上位机与STM32进行串口通信,控制多个LED的状态。 本篇文章的主要目标: 1、设计两个界面,串口连接界面、控制界面。 2、只有在串口连接成功才能打开控制界面。 3、打开控制界面时,串口保持连接。 4、自定义控件,提升开发效率。 以下是我入门Qt的视频

    2024年02月06日
    浏览(46)
  • Openmv识别Apriltag码并与stm32进行串口通信

            本文使用带有独立处理图像模块的摄像头Openmv进行Apriltag码的识别,并将Openmv与stm32进行串口通信,将Apriltag码的ID、中心位置相对于Openmv摄像头中心坐标的偏移量、以及Apriltag码相对于Openmv镜头的距离通过串口通信传输给stm32。         接线图Openmv通过电脑USB口

    2024年04月27日
    浏览(36)
  • K210学习笔记(二) K210与STM32进行串口通信,K210收,STM32发

    想用STM32通过串口给K210发数据,并在屏幕上显示,看了好几篇博客,终于搞通了,大家感兴趣也可以看看。 K210学习笔记(一) K210与STM32串口通信相关 接线,STM32的串口引脚比较固定,而K210就牛比了,任意映射,懒人福音。这里我找了两个没有被复用的IO,IO9和IO10 STM32 K210 GND

    2023年04月08日
    浏览(39)
  • 嵌入式_GD32使用宏开关进行Debug串口打印调试

    串口Debug是一种将数据通过串口发送的方法。通过使用printf函数,我们可以将需要发送的数据格式化为字符串,并通过串口发送出去。在C语言中,通常使用串口发送数据的函数为printf函数,但是需要将标准输出重定向到串口。 本文详细的介绍了如何重定向printf输出到串口输出

    2024年02月14日
    浏览(48)
  • ROS机器人制作(三)—— ROS上位机与stm32进行串口通信

    总代码在文末,需要完整的工程文件可以私聊(收一点点辛苦费) 首先创建一个功能包,用于发送和接收数据。 注意: 1.功能包依赖: roscpp std_msgs rosserial 2.当有两个c++文件进行编译时可以在功能包下的CMakeLists.txt文件中 第一部分是ROS上位机给stm32发送数据。第二部分是stm

    2024年02月15日
    浏览(51)
  • 通过串口中断的方式进行ASR-01S模块与STM32通信(问题与解决)

    最近在做一个智能家居的项目,需要实现语音控制的功能,于是我选用了ASR-01S模块与STM32通信,这个模块最大的好处在于有配套的编程软件和语音库,不用自己训练且编程简单(少儿编程的程度)。ASR-01S的代码架构在这不多说,总之在收到语音后它会通过串口发送一串命令给

    2024年04月22日
    浏览(49)
  • STM32使用中断及串口通信

    采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。单片机除了基本的连线外,我们另外只接一只LED灯。 使用外部中断的基本步骤如下: 1.设置对应时钟 2.设置中断 3.初始化IO 4. 把特定IO口设置为中断线路进行初始化 5. 在中断通道的响应函数中中断函数

    2024年02月04日
    浏览(50)
  • 基于stm32与串口通信的freeMaster使用

            从安装驱动程序FMASTERSCIDRV.exe的安装路径上获取源码,如图1所示。其中src_common文件夹里放着串行通信通用的驱动源码,将其全部复制到自己项目的文件中。src_platforms文件夹里放着与硬件平台相关的示例源代码,如图3、4所示,我们选择基于Arm® Cortex®-A、Cortex-R和

    2024年02月09日
    浏览(89)
  • STM32串口通信——DMA中断 (简单配置即可直接使用)

    目录 各函数的功能及使用方法 1.串口调试输出 2. 串口调试输出 接口设置    3. 串口格式化输出 4.用户串口DMA中断初始化函数 使用方法 1.找到系统的串口初始化函数 2.在结束位置添加我们的串口初始化函数  5.用户中断回调函数 使用方法 1.找到系统的中断服务.c文件 打开  

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包