hal 编码器做用户输入时捕获初值的设置
- 2022 年 1 月 8 日
- 筆記
uint16_t encoderDirection = __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim3);
uint16_t encoderValue = __HAL_TIM_GET_COUNTER(&htim3);
主要就这两句代码
一个获取方向,正转0 反转1(编码器接反了的话,这个值相应的也就比反过来)
另一个时获取捕获值
但是如果我只想用编码器做用户输入
那一会是0 2 4 6一会是65535 65533 65531方便呢还是从32767开始正转 32769 32771反转32765 32763方便呢?
显然是后者
不需要考虑方向了这样就可以节约一些代码空间
如果芯片FLASH大还好说,但目前这个情况,32kb的f031大概3元,64的就要十几块,所以肯定选小的
flash不够了,能少写几行算几行啊
所以,我选择初始化后,给定时器CNT一个初始值
翻了翻HAL好像没有直接操作定时器CNT的函数,所以自己操作寄存器吧
htim3.Instance->CNT |= ecnInitValue;