STM32/STM8技术william hill官网
登录
直播中
dvd1478
11年用户
586经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 制造/封装 模拟技术 连接器 EMC/EMI设计 光电显示 存储技术 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU RF/无线
私信
关注
[经验]
【阿波罗STM32F767试用体验】TIM的设置
定时器很丰富,主要在以下章节
对应
STM32
CubeMx
其设置也是相对简单
不过我感觉在这里的设置就不够人性化,一个时钟源,一个溢出方式这两个至少要查看资料,为什么不直接给个要设定的计数周期,然后就自动算出来
定时器多,时钟源也是多的,主要以下
溢出方式
可以推出定时器溢出时间计算方法:Tout=((Counter Period +1)*(Prescaler+1))/(Ft/Internal Clock Division) us.
生成代码后,注意添加中断函数
/**
* @brief This func
ti
on handles TIM3 global interrupt.
*/
void TIM3_IRQHandler(void)
{
/* USER CODE BEGIN TIM3_IRQn 0 */
/* USER CODE END TIM3_IRQn 0 */
HAL_TIM_IRQHandler(&htim3);
/* USER CODE BEGIN TIM3_IRQn 1 */
/* USER CODE END TIM3_IRQn 1 */
}
/**
* @brief This function handles TIM4 global interrupt.
*/
void TIM4_IRQHandler(void)
{
/* USER CODE BEGIN TIM4_IRQn 0 */
/* USER CODE END TIM4_IRQn 0 */
HAL_TIM_IRQHandler(&htim4);
/* USER CODE BEGIN TIM4_IRQn 1 */
/* USER CODE END TIM4_IRQn 1 */
}
但它们最终时通过调用回调函数来实现的,所以添加以下代码即可:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
extern __IO int32_t OS_TimeMS; //GUI_X.c
if(htim==(&htim3))
{//定时器3中断服务函数调用
OS_TimeMS++;
}
else if(htim==(&htim4))
{//定时器4中断服务函数调用
GUI_TOUCH_Exec();
}
}
设置好了,但并不是定时器就能运行,还需要以下的代码
void HAL_TIM_Start(void)
{
HAL_TIM_Base_Start_IT(&htim3);
HAL_TIM_Base_Start_IT(&htim4);
}
更多回帖
rotate(-90deg);
回复
相关帖子
正点原子
阿波罗
STM32F767
16615
【
阿波罗
STM32F767
试用
体验】
阿波罗
体验与硬件
设置
6443
【
阿波罗
STM32F767
试用
体验】开箱验货
2448
【
阿波罗
STM32F767
试用
体验】MPU
3369
【
阿波罗
STM32F767
试用
体验】IO扩展
3426
【
阿波罗
STM32F767
试用
体验】按键应用
3242
阿波罗
STM32F767
开发板IO资源分配表
4
阿波罗
STM32F767
开发板入门教程
5
阿波罗
STM32F767
开发板常见问题汇总
0
阿波罗
STM32F767
开发板资源详细列表
5424
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分