STM32F407#
我在网上看到很多奇奇怪怪的东西。其中就有一个STM32F4discovery,这个我不知道是啥,但总是会看到。包括使用CLion时配OpenOCD时都会跳出它的config文件。但最后我选的还是STM32F4xx的config。在此还得感谢@Keiler提供的友情帮助,帮我暂时配好了CLion的开发环境。有关于CLion开发环境的配置我在另一篇文档中有讲述。
开发环境:
板子:正点原子探索者开发板
MCU:STM32F407ZGT6
串口:RS232
屏幕:TFTLCD(已损坏)
软件:CLion + STM32CubeMX 以及 Keil
教程:正点原子官方配套例程
下载器:ST-Link
串口配置#
配置串口让我很是头疼。基本照着网上的来一遍都可以。但是其中还有一些细节——一个是将 printf()
函数重定向到串口,一个是要配置 HSE_VALUE 的值,因为它直接影响到串口波特率的配置。
printf() 重定向:直接参考这篇文档,这篇文档讲的非常详细,只要在 usart.c 文件末尾加上以下代码,另外还需在 usart.h 头文件中
#include <stdio.h>
即可。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22/* USER CODE BEGIN 1 */
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
/**
* @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(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 1 */配置HSE_VALUE:参考这篇博客,这篇博客讲到 HSE_VALUE 如何影响到串口波特率的配置问题。我遇到的问题是使用 STM32CubeMX 直接自动生成 168MHz 的时钟,这里了他默认的外部时钟为25MHz,即 HSE_VALUE = 25000000。而我对比了正点原子的官方串口通信例程中的值,例程中的值则为8MHz。所以我的串口一直乱码,而例程则不会乱码,将 HSE_VALUE 改为8MHz时,串口通信正常。
至此,串口配置完毕。此后我便可以通过串口进行通信了!!!耶比
定时器中断配置#
定时器中断,这里我使用的是定时器TIM3,进入