这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【手势翻页笔】过程贴-完成基本作业

共3条 1/1 1 跳转至

【手势翻页笔】过程贴-完成基本作业

高工
2024-05-18 11:40:06     打赏

我们通过以上内容的体验,可以说基本上已经完成了基本作业中的“使用STM32CubeMX图形化配置软件,配置STM32H503RB芯片的内部参数,外设参数,引脚分配等功能;”的任务,当然了这个小任务也是会贯穿在整个开发过程的。接下来我们继续完成基本作业中的“在学习完成全部讲解与实验后,在STM32H503RB开发板成功烧录程序,并编写软件代码实现LED灯周期闪烁,串口打印字符串"Hello EEPW & DigiKey! Hello STM32H503!";”的任务中的最后部分。实现LED的周期闪烁与串口打印功能。

我们分析一下需求,LED的周期闪烁分为阻塞式和非阻塞式两种,我准备通过定时器实现非阻塞式;而串口打印功能准备通过调试器的虚拟串口使用printf打印。

打开之前创建的IOC文件(初始化代码工程),并打开定时器配置模块,本次选用定时器6作为LED周期闪烁的定时器:

1.png

在这里我们需要配置两个地方,一个就是定时器的基本参数,一个就是需要打开中断。基本参数主要是通过系统时钟计算Period和Prescaler,闪烁周期暂定为2Hz,主频为144MHz,通过计算选定了(7200-1)和(10000-1)作为这两个参数。中断配置中直接打开就可以了。

串口打印功能,STlink的虚拟串口主要用到的USART3,如下图:

2.png

我们在STM32Cube中配置USART3,如下图:

3.png

基本作业完整代码如下:

/* USER CODE BEGIN PFP */

#if defined(__ICCARM__)
__ATTRIBUTES size_t __write(int, const unsigned char *, size_t);
#endif /* __ICCARM__ */

#if defined(__ICCARM__)
/* New definition from EWARM V9, compatible with EWARM8 */
int iar_fputc(int ch);
#define PUTCHAR_PROTOTYPE int iar_fputc(int ch)
#elif defined ( __CC_ARM ) || defined(__ARMCC_VERSION)
/* ARM Compiler 5/6*/
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#elif defined(__GNUC__)
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#endif /* __ICCARM__ */

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM6)
  {
      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  }

}
/* USER CODE END 0 */

  /* USER CODE BEGIN 2 */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

  HAL_TIM_Base_Start_IT(&htim6);
  HAL_TIM_Base_Start(&htim6);
  printf("** Hello EEPW & DigiKey! Hello STM32H503! ** \n\r");
  /* USER CODE END 2 */
  
  /* USER CODE BEGIN 4 */
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(&huart3, (uint8_t *)&ch, 1, 0xFFFF);

  return ch;
}

/* USER CODE END 4 */

其他自动生成的代码我们都不用动,注意一点我们自己添加的代码一定要放在USER CODE内部,否则重新生成初始化的时候会被覆盖。通过上述我们添加的代码实现了LED以2Hz的频率闪烁(非阻塞方式),并通过串口可以收到串口上传的数据。

4.png

至此,基本作业完成。




关键词: 手势翻页笔     DIY     过程贴    

专家
2024-05-18 12:53:48     打赏
2楼

参考参考!


工程师
2024-05-19 04:18:16     打赏
3楼

感谢楼主的分享


共3条 1/1 1 跳转至

回复

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