CubeMX可以完成很多初始化的工作,给开发带来了便利,使用CubeMX,选择STM32F769I-DISCO板子,如下图:
双击进去后,设置为外部晶振:
使能串口1:
设置好时钟个,这个可以从固件中的任何一个程序中看出,如下图:
对应设置如下:
对UART1的设置如下:
点击生成工程,如下设置:
生成的工程使用IAR打开,笔者使用的7.7版本。
现在开始添加代码,首先添加一个全局变量用来存收到的数据:
- <font size="3" face="微软雅黑">uint8_t receive;</font>
复制代码 在uart.c中添加如下两段代码:
- <font size="3" face="微软雅黑">#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__ */</font>
复制代码- <font size="3" face="微软雅黑">PUTCHAR_PROTOTYPE
- {
- /* Place your implementation of fputc here */
- /* e.g. write a character to the USART3 and Loop until the end of transmission */
- HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
- return ch;
- }</font>
复制代码 然后添加主函数中断接收代码和一个printf发送:
- <font size="3" face="微软雅黑">HAL_UART_Receive_IT(&huart1,(uint8_t *)&receive,1);
- printf("UART_Test");</font>
复制代码 在main.c主函数外添加一个中断接收回调函数:
- <font size="3" face="微软雅黑">void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- HAL_UART_Receive_IT(&huart1,(uint8_t *)&receive,1);
- HAL_UART_Transmit(&huart1, (uint8_t *)&receive, 1, 0xFFFF);
- }</font>
复制代码 好啦,大功告成,现在烧录进去后首先会显示“UART_Test”,然后输入什么就会输出什么。如下图:
程序源代码:链接:http://pan.baidu.com/s/1bBJHeu 密码:l3jc
点击此处,查看STM32F769I开发板官方资源。