STM32F103C8T6 串口中断收发程序测试

 

 

 

目录

使用STM32ClubMX生成代码

选择对应该的单片机型号,选择需要用到的端口资源,本例使用串口1。

设置串口1的相关参数

设置串口1中断 NVIC 参数,抢先优先级0,子优先级1.

设置系统时针频率

设置工程保存位置和名称,设置IDE工具为keil  MDK—ARM  ,V5版本。

完成后点击 “GENERATE CODE" 创建代码,进入代码编辑。

编辑代码

在main.c主程序中已经为我们定义好了各种参数和函数,如下:

在MX_USART1_URAT_Init() 函数最下面加入串口中断接收语句行

在main.c 最下面外加入串口中断回调函数,用来处理串口中断。本例只是简单的把串口1收到的数据发出去。


 

 

 

 

 

 

 

 


使用STM32ClubMX生成代码

选择对应该的单片机型号,选择需要用到的端口资源,本例使用串口1。

设置串口1的相关参数

 

115200,8,n,1

设置串口1中断 NVIC 参数,抢先优先级0,子优先级1.

设置系统时针频率

设置工程保存位置和名称,设置IDE工具为keil  MDK—ARM  ,V5版本。

完成后点击 “GENERATE CODE" 创建代码,进入代码编辑。

编辑代码

在main.c主程序中已经为我们定义好了各种参数和函数,如下:

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void); //串口初始化
static void MX_I2C1_Init(void);
static void MX_NVIC_Init(void);  //串口中断初始化

在MX_USART1_URAT_Init() 函数最下面加入串口中断接收语句行

static void MX_USART1_UART_Init(void)
{

  huart1.Instance = USART1;
  huart1.Init.BaudRate = 115200;
  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_Receive_IT(&huart1,rxData,1); // 串口1中断接收

  }

在main.c 最下面外加入串口中断回调函数,用来处理串口中断。本例只是简单的把串口1收到的数据发出去。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

      //发送收到的数据
      HAL_UART_Transmit(&huart1,rxData,1,2000);  
      
     //再开串口1中断接收
    HAL_UART_Receive_IT(&huart1,rxData,1);   

    /* 当接电脑发送大于10个字节,单片机装满数组后串口阻塞不再回传 */
    /* 当电脑发送小于等于10个字节时无论多久发都正常,不会停止回传 */

}

接收大于10字节后出错的问题不知道为什么?

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值