这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 第3讲:Nucleo入门之串口与定时器

共5条 1/1 1 跳转至

第3讲:Nucleo入门之串口与定时器

菜鸟
2015-12-30 19:04:01     打赏
1.      补充知识:

串口:串行接口简称串口,通常指COM口。

图片:


串口通信的概念很简单,串口按位(bit)发送和接收字节,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

       典型地,通信使用3根线完成:(1)地线,(2)发送,(3)接收


2、打开和配置串口与定时器


3、串口配置如下:


4、定时器配置:





5、到此工程就配置完毕了,点击生成工程文件,接下来先说串口:

因为本文档主要针对之前没有任何单片机基础的人,所以这里不讲串口收发函数,而是直接将串口重定向到printf,使用方法与C语言中printf函数完全相同,但在用之前,需要我们添加一段代码:

/* USER CODE BEGIN 0 */
#undef __GNUC__
#ifdef __GNUC__
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

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(&huart2, (uint8_t *)&ch, 1, 0xFFFF); 

  return ch;
}
/* USER CODE END 0 */
就是上面这两段代码,添加到main.c中对应位置/* USER CODE BEGIN 0 */和/* USER CODE END 0 */之间。

然后别忘了包含头文件“stdio.h”

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
现在就可以试下在main函数中输入 printf("Hello World!");

打开串口调试助手(见附件),看下效果了!

6、定时器


51单片机中,又叫定时/计时器,这个叫法有两个原因:

1)  因为它不但能够定时,还能够用于对外部信号进行计数。

2)本质上,它就是一个计数器,定时功能只是它对固定的时钟脉冲进行计数而已。

定时器是单片机一个功能非常丰富的外设,主要应用包括:外部脉冲测量(如超声波测距)、外部信号计数(如红外开关计数)、PWM输出(如直流电机调速、LED亮度调节)、普通定时(如I2C协议模拟)

本次主要讲使用定时器输出PWM控制LED亮度

使用到的函数:

HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)

htim2:是定时器编号

TIM_CHANNEL_是定时器输出通道号

一个定时器可以有1~4PWM输出通道,分别对应TIM_CHANNEL_1~ TIM_CHANNEL_4

7、附件是一个例程,实现的效果就是控制一个RGB的灯,在20种颜色之间进行切换,20种颜色是自己预先定义的,保存到一个二维数组中,具体见附件中main.c,有疑问的可以跟帖,代码就不详述了!下面上个效果图:



Uart_TIM.rar





院士
2015-12-30 23:21:27     打赏
2楼
楼主 写得真好,看得出,楼主的动手能力也很强的。

菜鸟
2015-12-31 09:04:00     打赏
3楼
菜鸟路过,资源还在审核,站务加油,这个帖子很有帮助,赞一个

助工
2015-12-31 10:08:38     打赏
4楼
就是挺棒的,从串口的历史讲起

助工
2015-12-31 10:36:14     打赏
5楼
楼主棒,给楼主点个赞~

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]