目录
选择对应该的单片机型号,选择需要用到的端口资源,本例使用串口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字节后出错的问题不知道为什么?