[STM32L0] STM32L031测评之:玩玩串口

[复制链接]
5343|9
 楼主| 黑夜之狼 发表于 2016-4-9 23:50 | 显示全部楼层 |阅读模式
经过上一次的帖子,简单介绍过cube的使用后STM32L031测评之:用cube点亮你的LED,这次我们继续用cube来玩串口第一步:使用uart2(STM32L031K6 NUCLEO32使用USART2连接stlink 的vcp)所以我们不需要另外的转串口工具
我们采用异步串口,所以选用Asynchronous
QQ图片20160409233529.png
第二步:配置USART的参数,我们采用115200,8-n-1配置
1、点击configuration:
2、双击connectivity中的USART2
3、Baud Rate选项输入115200
4、Word Length 选择8bit,其他保持默认
5、使能中断
6、点击Apply,OK

QQ图片20160409233905.jpg
QQ图片20160409233936.png
第三步:编写主函数
  1. int main(void)
  2. {

  3.   /* USER CODE BEGIN 1 */

  4.   /* USER CODE END 1 */

  5.   /* MCU Configuration----------------------------------------------------------*/

  6.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  7.   HAL_Init();

  8.   /* Configure the system clock */
  9.   SystemClock_Config();

  10.   /* Initialize all configured peripherals */
  11.   MX_GPIO_Init();
  12.   MX_USART2_UART_Init();

  13.   /* USER CODE BEGIN 2 */
  14.     printf("%s\r\n", "UART2 实验------");
  15.         printf("硬件平台:%s\r\n", "STM32L031K6 NUCLEO32");
  16.     printf("This is a UART2 Demo \r\n" );
  17.         printf("("__DATE__ " - " __TIME__ ") \r\n");
  18.   /* USER CODE END 2 */

  19.   /* Infinite loop */
  20.   /* USER CODE BEGIN WHILE */
  21.   while (1)
  22.   {
  23.   /* USER CODE END WHILE */

  24.   /* USER CODE BEGIN 3 */

  25.   }
  26.   /* USER CODE END 3 */

  27. }
这里用到了printf函数,所以需要重定向
在usart.c添加以下代码:
  1. #pragma import(__use_no_semihosting)            
  2.             
  3. struct __FILE
  4. {
  5.     int handle;
  6.     /* Whatever you require here. If the only file you are using is */
  7.     /* standard output using printf() for debugging, no file handling */
  8.     /* is required. */
  9. };
  10. /* FILE is typedef’ d in stdio.h. */
  11. FILE __stdout;      

  12. void _sys_exit(int x)
  13. {
  14.     x = x;
  15. }

  16. int fputc(int ch, FILE *f)
  17. {      
  18.     while( (USART2->ISR&0x40) == 0 );  
  19.     USART2->TDR = (uint8_t) ch;      
  20.     return ch;
  21. }
实现现象:
QQ图片20160409234622.png

上传工程代码: STM32L031_USART.rar (4.2 MB, 下载次数: 151)

Aires 发表于 2016-7-12 21:15 | 显示全部楼层
博主您好,我刚刚开始用stm32l051c8t6,在串口调试中遇到问题,工程的发送没问题,但在串口中总只打印一个字节,工程参考了博主的还是一样的只显示一个字,想问下博主有没有遇到这样的问题,有没有什么方法可以解决的
zhuomuniao110 发表于 2016-7-13 00:32 | 显示全部楼层
这关系到如何让Printf函数利用串口输出的问题。
 楼主| 黑夜之狼 发表于 2016-7-13 08:58 | 显示全部楼层
Aires 发表于 2016-7-12 21:15
博主您好,我刚刚开始用stm32l051c8t6,在串口调试中遇到问题,工程的发送没问题,但在串口中总只打印一个 ...

具体描述下情况?
Aires 发表于 2016-7-13 11:08 | 显示全部楼层

我用的STM32CubeMX(STM32L0 1.7.0)生成环境工程来的,比如发送0123456789,他只发送0之后再按发送没有反应了,有尝试修改,结果是按一次发送就发一次0。再改想让他一次性发送完全部的信息(设置起始标志之类的),结果是什么都不发送了。他的中断回调函数好像就只进入一次。。。。
小欧阳11 发表于 2018-7-6 16:40 | 显示全部楼层
这个意思是发什么收什么吗
yuyuesunny 发表于 2018-7-6 17:21 | 显示全部楼层
Aires 发表于 2016-7-13 11:08
我用的STM32CubeMX(STM32L0 1.7.0)生成环境工程来的,比如发送0123456789,他只发送0之后再按发送没有 ...

想好每次发什么内容,长度是多少。是循环发还是单独发
huangcunxiake 发表于 2018-7-6 21:22 | 显示全部楼层
666,这个工具真是强大。
qq821865955 发表于 2019-9-4 14:30 | 显示全部楼层
本帖最后由 qq821865955 于 2019-9-4 16:24 编辑

请问博主能否分享下这个调试工具,谢谢。
 楼主| 黑夜之狼 发表于 2019-9-6 09:33 | 显示全部楼层
qq821865955 发表于 2019-9-4 14:30
请问博主能否分享下这个调试工具,谢谢。

网上很多下载
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:代理中颖MCU,可技术交流,欢迎私信骚扰

18

主题

1241

帖子

11

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