你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STEVAL-STWINKT1B】:02调试一下基本外设

[复制链接]
〃聪聪哥哥 发布时间:2026-3-27 20:09
一:使用STM32cube MX软件创建工程1.1:LED灯 GPIO口的配置
02-2 LED灯引脚.png
LED1 <------>PE1
LED2 <------>PD0
这里查看原理图,将IO口置高就可以,在cube MX软件中,将GPIO口设置成输出模式就可以。
操作函数如下所示:
  1.                 HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_1);
复制代码
1.2:板载按键调试可以实现外部中断的功能
02-3 外部按键.png
可以看到用户按键使用的引脚是PE0,这里我们使用中断线0 就可以了,同时配置成上升沿有效。
02-4 按键 cube配置.png
调用函数如下所示:
  1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  2. {
  3.         if(GPIO_Pin == GPIO_PIN_0)
  4.         {        
  5.                 HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_0);        
  6.         }     
  7. }
复制代码
1.3 与调试器相连的串口2由于开发板没有外接屏幕,为了方便看到采集到的传感器数据,这里我使用的是串口2,同时也可以使用重映射串口2实现printf的函数,输出调试信息。
02-5 调试引脚.png
可以看到这里使用的是串口2,然后在原理图中找到使用的实际引脚;
USART2_TXD <---------------------> PD5
USART2_RXD <---------------------> PD6
STM32 cube MX软件配置:
02-6  cube MX串口配置.png
串口2的重映射功能如下所示:
  1. int fputc(int ch, FILE *f)
  2. {
  3.         HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);
  4.         return ch;
  5. }
复制代码
1.4 定时器6的调试过程这里使用定时器6,完成项目基本的任务调度;
02-7 定时器6配置.png
这里配置定时器6,每1ms中断一次。
二:移植时间调度函数2.1 任务标记函数
  1. void Task_Marks_Handler_Callback(void)
  2. {
  3.     char i;
  4.     for(i=0; i<Tasks_Max; i++)
  5.     {
  6.         if(Task_Comps[i].TIMCount)    /* If the time is not 0 */
  7.         {
  8.             Task_Comps[i].TIMCount--;  /* Time counter decrement */
  9.             if(Task_Comps[i].TIMCount == 0)  /* If time arrives */
  10.             {
  11.                 /*Resume the timer value and try again */
  12.                 Task_Comps[i].TIMCount = Task_Comps[i].TRITime;
  13.                 Task_Comps[i].Run = 1;    /* The task can be run */
  14.             }
  15.         }
  16.     }
  17. }
复制代码
2.2 任务处理函数:
  1. void Task_Pro_Handler_Callback(void)
  2. {
  3.     char i;
  4.     for(i=0; i<Tasks_Max; i++)
  5.     {
  6.         if(Task_Comps[i].Run) /* If task can be run */
  7.         {
  8.             Task_Comps[i].Run = 0;    /* Flag clear 0 */
  9.             Task_Comps[i].TaskHook();  /* Run task */
  10.         }
  11.     }
  12. }
复制代码
2.3 定义几个时间任务:
  1. static TASK_COMPONENTS Task_Comps[]=
  2. {
  3.   {0, 1000,1000, task_1000ms},                   //task 1 Period: 1000ms
  4.   {0, 100,100,   task_100ms},                    //task 2 Period: 100ms
  5. };
复制代码
三:实际测试如下:在100ms任务中和1000ms 任务中添加对LED灯的闪烁和串口输出函数。如下所示
  1. void task_1000ms(void)
  2. {
  3.                 HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_1);
  4. }

  5. void task_100ms(void)
  6. {
  7.         printf("stm32l4R9 board!!!!");
  8. }
复制代码
02-8 串口接收数据.png
收藏 评论0 发布时间:2026-3-27 20:09

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版