这是一个卑微电子信息学员的开始

这是一个卑微电子信息学员的开始

这是学习stm32的第四天

寒假开始了,卑微电子信息学员开始了stm32的学习过程。

stm32的初始化注意事项

一. 通过stm32的引脚测量正波长和占空比的初始化操作

1.以时钟1为输出:
在这里插入图片描述
在这里插入图片描述

  1. 以时钟2为输入:
    在这里插入图片描述
    在这里插入图片描述

一. 通过stm32的引脚测量正波长和占空比的函数

1.HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);
该函数的功能为读取htim2的Counter peri信息(即次数信息);
2.__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CH
ANNEL_1,TIM_ICPOLARITY_FALLING(或者RISING));该函数的功能为设置1中的函数HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1); 在上升檐或者下降檐读取数据;
3.HAL_TIM_IC_Stop_IT(&htim2,TIM_CHANNEL_1);
__HAL_TIM_DISABLE(&htim2);
这两个函数使htin2停止中断;
4.HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
__HAL_TIM_ENABLE(&htim2);
这两个函数使htin2开始中断;
5.__HAL_TIM_SET_CAPTUREPOLARITY(&htim2,TIM_CH
ANNEL_1,TIM_ICPOLARITY_FALLING(或者RISING));该函数的默认代码会有错误,将它的里面两个函数TIM_RESET_CAPTUREPOLARITY((HANDLE), (CHANNEL));
TIM_SET_CAPTUREPOLARITY((HANDLE), (CHANNEL), (POLARITY)); 中的第一个的代码改为#define TIM_RESET_CAPTUREPOLARITY(HANDLE, CHANNEL)
(((CHANNEL) == TIM_CHANNEL_1) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :
((CHANNEL) == TIM_CHANNEL_2) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :
((CHANNEL) == TIM_CHANNEL_3) ? ((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC3P)) :
((HANDLE)->Instance->CCER &= ~(TIM_CCER_CC4P)))

一. 通过stm32的引脚测量正波长和占空比的整体代码

  1. 定义的变量有:
    uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len);
  2. main函数部分: 在这里插入图片描述
  3. 在User Code4中的部分:
    在这里插入图片描述
  4. 在时钟中断的部分:
    在这里插入图片描述

小计:这是一个较为高效的算法,只有当每经过了200us后才会进行检测正波长时间的操作,不会占用CPU或者影响其它任务的进行

本文仅供学习使用,禁止一切转载或调用,最终解释权由作者本人享有。

发布了4 篇原创文章 · 获赞 0 · 访问量 183

猜你喜欢

转载自blog.csdn.net/mohaoyuan/article/details/103963266