单片机学习小组
直播中

李永每

7年用户 1403经验值
私信 关注

基于STM32CubeMX (HAL库) 的点灯和串口通信实验设计实现

基于STM32CubeMX (HAL库) 的点灯和串口通信实验设计实现

回帖(1)

刘桂珍

2022-2-18 15:26:32
简介

环境如下:


  • 硬件:NUCLEO-F767ZI板
  • 最初配置:STM32CubeMX (HAL库)
  • IDE:TrueSTUDIO
  • 串口工具:CuteCOM

STM32CubeMX 和 STM32CubeMX 的配置和
配置

打开 STM32CubeMX-> 新项目-> 选择 NU232CubeMX-F767,选择 NU 图形

显示面板弹出窗口选择安装 NO:

OK如下所示:默认的LD3(红灯)LD3(红灯)不予优先变换

图2 (蓝理绿,)。








菜单栏Project -> Setting -> Project选项卡:

填入工程名,选择工程放置的文件目录,IDE选择TrueSTUDIO。
然后是Code Generator选项卡:

都配置完后,Project -> Generate Code。弹出:选择

时并不能像Win10中那样会直接打开Keil,这里是会启动浏览器,大概是关联配置,这里选择关闭器会打开项目。
TrueStudio

打开 TrueSTUDIO(默认 /opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.1.0/ide 目录)。
File -> Import -> General -> Existing Projects into Workspace -> 接下来,选择上面的STM32CubeMX生成的工程目录作为目录:这样的

工程就导入了。
uasrt.c 文件下面 /* USER CODE BEGIN 1 */ 和 /* USER CODE END 1 */ 之间填入如下代码用于在 TrueSTUDIO 中支持使用 printf :

/* USER CODE BEGIN 1 */
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);


  return ch;
}


int _write(int file, char *ptr, int len)
{
      int DataIdx;
      for (DataIdx = 0; DataIdx < len;DataIdx++)
      {
           __io_putchar(*ptr++);
      }
      return len;
}
/* USER CODE END 1 */
main.c 加入如下代码:

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
uint8_t count = 0;
uint8_t aRxBuffer3[1];
/* USER CODE END PFP */


  /* USER CODE BEGIN 2 */
  HAL_UART_Receive_IT(&huart3, (uint8_t *)aRxBuffer3, 1);
  /* USER CODE END 2 */


  while (1)
  {


  /* USER CODE END WHILE */


  /* USER CODE BEGIN 3 */
                ++count;
                HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
                printf("Hello, %3drn", count);
                HAL_Delay(100);
  }
  /* USER CODE END 3 */


/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
        if(huart == &huart3) {
                __HAL_UART_CLEAR_PEFLAG(&huart3);
                HAL_UART_Receive_IT(&huart3, aRxBuffer3, 1);
                HAL_UART_Transmit(&huart3, aRxBuffer3, 1, 10);        //Echo
        }
}


/* USER CODE END 4 */



工程的e文件保持不变即可,然后点击运行->调试自动调试。

调试区域的elf文件或者可以停止调试... 7 切换运行工作右图。
点击图标按钮按钮,开发板蓝灯闪烁,打开CuteCom:

# sudo apt install cutecom
sudo chmod 777 /dev/ttyACM0
sudo cutecom


可以看到数据的打印:
举报

更多回帖

发帖
×
20
完善资料,
赚取积分