搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32F1] 突然失忆 串口中断【回调函数】的标准模板 哪儿来的 ?

[复制链接]
285|21
 楼主 | 2020-9-17 14:43 | 显示全部楼层 |阅读模式
打算 用 STM32CubeMX 自动生成【模板 代码】
结果呢:无论怎么设置 STM32CubeMX 的勾选


都无法看到 void HAL_UART_RxCpltCallback( ...
之类的【(空白) 串口 回调函数】模板、奇怪啊
_
几年前的 软件工程代码里 明明有这种 模板 啊:
几年前这个回调函数模板是怎么来的呢
新的STM32CubeMX 难道不能自动生成回调函数模板?
6666.jpg
【痛苦的事情 莫过于 做过的事情、现在反而做不来了
3333.jpg
几年前这个回调函数模板是怎么来的呢


使用特权

评论回复
 楼主 | 2020-9-17 14:50 | 显示全部楼层
本帖最后由 caosix 于 2020-9-17 14:53 编辑

换句话 请问各位:回调函数 的标准模板
是不是STM32CubeMX 自动生成出来的 ???



【今天新建的 Test 工程】回调函数就一个week
空函数,完全没有 以前的 那些详细内容了啊?


使用特权

评论回复
 楼主 | 2020-9-17 17:47 | 显示全部楼层
莫非是 旧版本可以自动生成:详细的 回调函数。
新版本反而没有这个功能了。。谁有 4.6.0老版本

644.jpg

使用特权

评论回复
| 2020-9-17 18:26 | 显示全部楼层
我们一起,看看问题怎么可以解决一下?

使用特权

评论回复
 楼主 | 2020-9-17 20:10 | 显示全部楼层
数据采集存储 发表于 2020-9-17 18:26
我们一起,看看问题怎么可以解决一下?

STM32CubeMX  4.6.0 版本    我已经找到了
安装之后 生成的 代码还是 没包含详细的回调函数,
这就 排除了 CubeMX 版本  问题 。。。

那么几年前 当初 这么 规范的 注释:肯定不是我写的
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==UART4)
  {
  /* USER CODE BEGIN UART4_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart4,(uint8_t *)CD_In,16);
  /* USER CODE END UART4_MspDeInit 0 */
  }

——现在 只需要解决一个问题 ——
这么详细 规范的 回调函数模板:
究竟是 怎么来的 ???哪儿来的


我现在 找不到来源 :非常的困惑。

使用特权

评论回复
 楼主 | 2020-9-17 21:00 | 显示全部楼层
本帖最后由 caosix 于 2020-9-17 21:02 编辑

现在问题是:忘记了下面 蓝色字 的自动生成代码 是怎么来的 ?

  ******************************************
  * File Name          : main.c
  * Date               : 29/01/2017 13:18:52
  * Description        : Main program body
  ******************************************
  * COPYRIGHT(c) 2017 STMicroelectronics
#include "stm32f1xx_hal.h" ——芯片是 STM32F103 RCT6

/* USER CODE BEGIN Includes */
#include <stdio.h>
#include "My_Stm32F103.h"
/* USER CODE END Includes */

/* USER CODE BEGIN 4 */
int fputc(int ch,FILE *f)
{
  HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,10);
  return ch;
}


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==UART4)
  {
  /* USER CODE BEGIN UART4_MspDeInit 0 */

  /* USER CODE END UART4_MspDeInit 0 */
  }
  else if(huart->Instance==UART5)
  {
  /* USER CODE BEGIN UART5_MspDeInit 0 */

  /* USER CODE END UART5_MspDeInit 0 */
  }
  else if(huart->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspDeInit 0 */

  /* USER CODE END USART1_MspDeInit 0 */
  }
  else if(huart->Instance==USART2)
  {
  /* USER CODE BEGIN USART2_MspDeInit 0 */

  /* USER CODE END USART2_MspDeInit 0 */
  }
  else if(huart->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspDeInit 0 */
    HAL_UART_Receive_IT(&huart3,(uint8_t *)BD_In,16);
  /* USER CODE END USART3_MspDeInit 0 */
  }
}


void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
  // printf("error code:%X\r\n",huart->ErrorCode);
  if(huart->Instance==UART4)
  省略 省略 省略  。
}
/* USER CODE END 4 */


#ifdef USE_FULL_ASSERT


使用特权

评论回复
| 2020-9-17 21:52 | 显示全部楼层
HAL库是有的吧

使用特权

评论回复
| 2020-9-17 21:56 | 显示全部楼层
270525f636b23ed574.png

使用特权

评论回复
| 2020-9-17 21:59 | 显示全部楼层
头文件里都定义好了。

使用特权

评论回复
| 2020-9-17 21:59 | 显示全部楼层
291805f636ba9f319c.png
对应的C里面的函数是个若函数,因此你可以在你的程序文档重写该函数,照着抄就行,然后自己实现功能。

使用特权

评论回复
| 2020-9-17 22:22 | 显示全部楼层
楼上,人家问的是串口啊。

使用特权

评论回复
| 2020-9-17 22:27 | 显示全部楼层
644845f63717336235.png
好像类似。

使用特权

评论回复
 楼主 | 2020-9-18 08:41 | 显示全部楼层
本帖最后由 caosix 于 2020-9-18 08:46 编辑
幸福小强 发表于 2020-9-17 21:59
对应的C里面的函数是个若函数,因此你可以在你的程序文档重写该函数,照着抄就行,然后自己实现功能。 ...

我疑问的是 “回调函数 的细节、详细代码” 是哪儿来的 (我失忆了)
不是你所显示的 __weak 那个(我现在的 CubeMX 也能生成 __weak)——
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==UART4)
  {
  /* USER CODE BEGIN UART4_MspDeInit 0 */——当年这种标准模板 绝对不是:我人工写的。

  /* USER CODE END UART4_MspDeInit 0 */——我不是软件专业人员,写不出这种规范的注释。
  }
  else if(huart->Instance==UART5)
  {
/* USER CODE BEGIN UART5_MspDeInit 0 */
【我现在苦闷的是:】新建的工程都只生成没用的__weak

无法生成详细的 Callback 回调函数模板,那么 当初的 模板是哪儿来的 ?


或许是:4.60到4.13的某个版本 CubeMX 具备这个功能,我当时没留意,
或许是:某个示例文档中有这段代码,我 copy 来了 但是【具体来源呢】?


我疑问的是 “回调函数 的细节、详细代码” 是哪儿来的 (我失忆了)
不是你所显示的 __weak 那个(我现在的 CubeMX 也能生成 __weak)


或者可以这么说:
——我现在需要:找到一个 能自动生成 “详细回调函数” 的软件工具



使用特权

评论回复
 楼主 | 2020-9-18 08:56 | 显示全部楼层
wahahaheihei 发表于 2020-9-17 22:22
楼上,人家问的是串口啊。

没关系的,谢谢 各位高手的 阅读、关注 。

苦闷的是:当初 这么详细而规范的 Callback 函数模板

现在找不到其来源,新版本的 CubeMX 也不自动生成。

使用特权

评论回复
| 2020-9-18 09:28 | 显示全部楼层
我感觉没有什么错误哦,弄的挺不错的。

使用特权

评论回复
| 2020-9-18 09:52 | 显示全部楼层
回调就是中断服务程序  以前做LINUX 不太理解  

使用特权

评论回复
 楼主 | 2020-9-18 10:39 | 显示全部楼层
便携手到老 发表于 2020-9-18 09:28
我感觉没有什么错误哦,弄的挺不错的。

现在是 :求助 各位高手,找到“那个 详细的(串口)回调函数” 的 来源 啊。


现在找不到其来源:心里很 困惑 啊 。。

使用特权

评论回复
| 2020-9-18 16:35 | 显示全部楼层
CubeMX不会生成if(XX==XX)的,这很明显是自己写的

使用特权

评论回复
| 2020-9-20 11:48 | 显示全部楼层
我倾向于版本问题,HAL_UART_RxCpltCallback肯定是自动生成的。

使用特权

评论回复
| 2020-9-21 10:37 | 显示全部楼层
这个注释   /* USER CODE BEGIN UART4_MspDeInit 0 */  
是你以前从 UART4_MspDeInit函数上复制过来的!

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表