完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
最近不做嵌入式,这是一个以前做过产品的威廉希尔官方网站
备忘。因为之前请教大神得到一些很好的思路。
如果我们需要接收一个序列协议,怎么做呢? 先放到缓冲区然后再检查标志位是一种思路。道理简单,关键要看怎么设计。这里介绍的方法是巧妙利用定时器,与串口中断进行耦合,得到一种鲁棒的接收方法。 具体: 打开定时器与串口中断 首先用示波器查看完整帧所需要的时间,并且设置为timMax。 定时器以适当的中断频率开启(例如1ms),每次中断都把表示时间的变量+1。 如果定时器中断时间超过timMax,则令接收数组的指针为0。 每次进来串口中断之后,定时器时间变量为0,接收数组的指针+1。 给出代码: 定时器端: /** * @brief This function handles TIM4 global interrupt. */ void TIM4_IRQHandler(void) { /* USER CODE BEGIN TIM4_IRQn 0 */ /* USER CODE END TIM4_IRQn 0 */ HAL_TIM_IRQHandler(&htim4); /* USER CODE BEGIN TIM4_IRQn 1 */ div_freq_flag_temp_laser_1 += 1; // Èç¹ûһֱûÓб»ÇåÁã ÄÇôºÜ¿ì»áÇ¿ÖÆÇåÁã Ò»¶¨Òª×¢Òâ ֮ǰµÄ»ù´¡ÖÜÆÚ²»ÊÇ1ms£¡£¡ÏÖÔڸĹýÀ´¾Í¿ÉÒÔÁË£¡ if(div_freq_flag_temp_laser_1 > div_freq_laser_flag){ laser_1_ptr = 0; } // ToggleIO // HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_9); /* USER CODE END TIM4_IRQn 1 */ } 串口端: /** * @brief This function handles USART1 global interrupt. */ void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); /* USER CODE BEGIN USART1_IRQn 1 */ div_freq_flag_temp_laser_1 = 0; // ½ÓÊս׶α£Ö¤temp²»»á³¬¹ý10ms lazer_data1[laser_1_ptr] = recvyoadata1[0]; laser_1_ptr += 1; // ²½½øµç»ú ºáÏò X // if(lazer_data1[0]==0x55 && lazer_data1[1]==0x51 && lazer_data1[10]==0xFF) if(lazer_data1[0] == 0x55) { // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lazer_op1= (uint16_t)(lazer_data1[6] << 8 | lazer_data1[7]); // 2 3 // // YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY lazer_op2=(uint16_t)(lazer_data1[8] << 8 | lazer_data1[9]); // HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_9); } HAL_UART_Receive_IT(&huart1, recvyoadata1,1); /* USER CODE END USART1_IRQn 1 */ } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1574 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1519 浏览 1 评论
949 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
672 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1565 浏览 2 评论
1852浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
622浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
507浏览 3评论
512浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
494浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 14:31 , Processed in 1.208679 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号