完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、硬件电路
STM32F103EVT6基本电路;选择串口1、串口2;串口2通过485接口输出,控制端是PC9端口,PC9=1时接收,0时发送。 二、CubeMX完成配置,生成工程 配置时钟、调试模式、IO、串口1、串口2参数、打开串口中断。 三、Keil添加代码,完成功能 /* USER CODE BEGIN PV */ //接收状态,完毕标志为1;处于接收状态则为0 uint8_t uart1Rxstate=0; //当前接收的字节总数 uint8_t uart1RxCounter=0; //接收缓冲 uint8_t uart1RxBuff[128]={0}; //uart2接收 //接收状态,完毕标志为1;处于接收状态则为0 uint8_t uart2Rxstate=0; //当前接收的字节总数 uint8_t uart2RxCounter=0; //接收缓冲 uint8_t uart2RxBuff[128]={0}; void USER_UART2_IRQHandler(void); /* 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 */ int fputc(int ch,FILE *f) { HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xffff); return ch; } /* 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_TIM6_Init(); MX_USART1_UART_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ //开串口中断 __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE); __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE); //串口2 485接收使能 HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_RESET); printf("Test UART1 out Hello STM32!"); char tr2[; HAL_Delay(500); HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_SET); HAL_UART_Transmit(&huart2,(uint8_t *)&tr2,sizeof(tr2),0xffff); HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_RESET); HAL_Delay(500); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ // 串口1接收到数据,串口2输出 if(uart1Rxstate==1) { HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_SET); HAL_UART_Transmit(&huart2,(uint8_t *)&uart1RxBuff,uart1RxCounter,0xffff); HAL_GPIO_WritePin(RS485_TX_EN_PORT, RS485_TX_EN_PIN, GPIO_PIN_RESET); memset(uart1RxBuff,0,128); uart1Rxstate=0; uart1RxCounter=0; } // 串口2接收到数据,串口1输出 if(uart2Rxstate==1) { HAL_UART_Transmit(&huart1,(uint8_t *)&uart2RxBuff,uart2RxCounter,0xffff); memset(uart2RxBuff,0,128); uart2Rxstate=0; uart2RxCounter=0; } } /* USER CODE END 3 */ } 四、串口调试工具调试测试 利用串口调试工具调试。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1641 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1562 浏览 1 评论
988 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1608 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
541浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
514浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 06:59 , Processed in 0.577239 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号