【STM32CobeMX】CubeMX建立基于STM32F1VBT6的FreeRTOS

STM32F103VBT6

内部时钟源RCC

 如果使用RTOS

使用了RTOS,默认使用SysTick;所以HAL库的时基就要用其他的定时器。

当用了RTOS,就要设置HAL的timebase为其他Timer,因为Systick会被操作系统设置为最低优先级中断,以及HAL使用了weak定义timebase的ISR中断函数,大家用同一个,会被RTOS的版本重载。

HAL时基不要选的和 RTOS的一样,RTOS默认是使用SysTick的中断来调度任务的,但是 HAL库也需要一个周期性的中断,它就建议你这两个周期性的中断不要用一个定时器。

另外HAL库本身一些函数的操作是需要始终节拍的,所以把这两个时钟节拍独立开来。

外部时钟源

其中BYPASS Clock Source表示旁路时钟源,也就是外部时钟,只需要外部提供时钟接入OSC_IN引脚,OSC_OUT引脚悬空,对应选择为BYPASS Clock Source;

Crystal/Ceramic Resonator表示晶体/陶瓷晶振,谐振器即相当于石英/陶瓷 晶振,OSC_IN 与 OSC_OUT引脚都要连接,对应选择为Crystal/Ceramic Resonator。

设置定时器

设置为内部时钟源

  1. 通用16bit定时器:2、3、4

  2. 高级16bit定时器:1

  3. 2个看门狗

  4. 1个sysTick定时器

1选择TIM4

2定时器时钟选择内部时钟

    Clock Source(时钟来源)       

计数器设置:

  • Prtscaler (定时器预分频系数)  : 0  [0~65535]
  • Counter Mode(计数模式) :   Up(向上计数模式)                    
  • Counter Period(自动重装载值) :    65535  [0~65535]
  • CKD(时钟分频因子) : No Division 不分频 (可以选择二分频和四分频   )
  • auto-reload-preload(自动重装载)  :    Enable 使能

定时器的定时周期

     T = (psc+1)(arr+1)/Tclk

  • psc 为定时器预分频系数 [0~65535]
  • arr为自动重装载值 [0~65535]
  • Tclk为系统时钟频率 64MHZ = 64us

常用配置数值,通过计算

T=(3699+1)(9999+1)/64us=1000 000us=1000ms=1s

T=(3699+1)(999+1)/64us=100 000us=100ms=0.1s

T=(639+1)(999+1)/64us=10 000us=10ms=0.01s

T=(63+1)(999+1)/64us=1 000us=1ms

   由这个图可见,这里配置的是定时器产生中断的频率,然后再跟据频率与时间的关系推出定时的时间。

  所以定时器频率为 f = 72M / Prescaler / Period = 72000 000 / 72 /1000 = 1000Hz;

  定时时间T = 1 / f 则: 1s / 1000Hz = 1000 000us / 1000Hz = 1000us =1ms。

  最后使用定时器中断跟关闭定时器中断以及回调函数即可, 使用中断的时候注意要先开启中断

HAL_TIM_Base_Start_IT(&htim1); //使用定时器的时候调用这个函数启动

HAL_TIM_Base_Stop_IT(&htim1);  //停止定时器的时候调用这个函数关闭

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM1)
  {
    //编写回调逻辑,即定时器1定时1MS后的逻辑
  }
}

FREERTOS配置

内存分配/总分配大小/内存管理方式

串口配置

这里选择异步通信,并指定波特率。

GPIO配置

PULLUP&PULLDOWN针对输入模式,比如我们一个单片机的I / O脚接一个按键的左端,按键的右端接正电源,那么我们就要设置I / O脚为下拉模式,因为这样才能使得按键按下去的时候,能把I / O脚拉高,不然设置上拉模式的话,即按键的功能等于摆设。同理,如果按键另一端接地,我们就要设置为上拉模式了。

STM32F407IGT6

无RTOS

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值