大连手机自适应网站建设报价,seo的网站,运营网站挣钱方法,网页设计论文总结怎么写目录
1 Tim定时器的时钟源
2 Tim定时器的配置
2.1 PWM配置
2.2 中断配置
3 生成代码
4 测试结果
结尾 1 Tim定时器的时钟源
TIM3的时钟来源自APB1 Timer clocks#xff0c;时钟树上所有总线频率均设置为了STM32F0能达到的最高频率#xff0c;此时APB1 Timer clocks …目录
1 Tim定时器的时钟源
2 Tim定时器的配置
2.1 PWM配置
2.2 中断配置
3 生成代码
4 测试结果
结尾 1 Tim定时器的时钟源
TIM3的时钟来源自APB1 Timer clocks时钟树上所有总线频率均设置为了STM32F0能达到的最高频率此时APB1 Timer clocks 48MHz。 2 Tim定时器的配置
依次选择PinoutConfiguration -- Timers -- TIM3参数配置如下 Clock Source选择Internal Clock内部时钟源。TIM的Internal Clock来自APB1 Timer clock(MHz)
Prescaler(PSC – 16 bits value)时钟源分频系数TIMx_PSC的PSC位一个计数的时间长度为480/48MHz 10微妙
Counter ModeTIMx_CR1中的DIR位Up向上计数Down向下计数Center Aligned mode1/2/3 Counter Period(AutoReload Register – 16 bits value)TIMx_ARR中的ARR位一个定时周期的时间10000 * 10微妙 100毫秒
Internal Clock DivisionTIMx_CR1中的CKD位时钟分频因子。定义在定时器时钟频率与数字滤波器使用的采样频率之间的分频比例
RepetitionCounter配置重复计数器的值这里设置为0表示不使用重复计数功能
auto-reload preloadTIMx_CR1中的ARPE位自动重装载预装载允许位。定义在TIMx_ARR和实际的自动重装载寄存器之间是否设置缓冲器
Trigger Output (TRGO) Parameters 一般是用来设置用作其他外设的触发源的。比如将Trigger Event Selection选择为Update Event然后在其他外设比如ADC中配置外部触发源时选择该定时器的触发事件如果可以的话这样在定时器产生Update Event时就可以启动外设实现用定时器来控制外设启动的功能 2.1 PWM配置
在Channel 1中选择PWM Generation CH1会自动将MCU的PA6配置为TIM3_CH1通过该PIN输出PWM信号。 PWM的一个周期的时间等于Counter Period的时间100ms PWM的Mode选择:
PWM mode 1在向上计数中当计数值小于CCR值时输出高电平计数值大于CCR值时输出低电平在向下计数中当计数值小于CCR值时输出低电平计数值大于CCR值时输出高电平PWM mode 2:在向上计数中当计数值小于CCR值时输出低电平计数值大于CCR值时输出高电平在向下计数中当计数值小于CCR值时输出高电平计数值大于CCR值时输出低电平。 Pulse(16 bits value)表示CH Polarity电平的持续时间这里高电平持续30ms低电平持续70ms
Fast Mode如果频率太高可以使能快速模式。可以大大提高PWM反应时间同时将IO口输出速度调高。 2.2 中断配置
在NVIC Settings中选择合适的中断优先级并勾选TIM3 global interrupt的中断使能。 3 生成代码
单击GENERATE CODE生成代码通过HAL_TIM_Base_Start(htim3) 启动TIM3TIM3_IRQHandler中断函数间隔100ms被周期调用一次。通过HAL_TIM_PWM_Start启动PWM信号的输出。过程中可通过调用__HAL_TIM_SET_COMPARE来改变占空比。
Main.c
/*** brief The application entry point.* retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM1_Init();MX_TIM3_Init();/* USER CODE BEGIN 2 */demo_init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}stm32f0xx_it.c
/*** brief This function 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 */
}demo.c
#include main.h
#include demo.h
#include tim.h#define LED_SWITCH_TIMER 500 // Unit:ms
#define FUNCTION_CALL_CYCLE 1 // Unit:msvoid demo_init(void)
{/********************************Start timer TIM1**********************************/HAL_TIM_Base_Start_IT(htim1); /********************************Start timer TIM3**********************************/HAL_TIM_Base_Start_IT(htim3); HAL_TIM_PWM_Start(htim3, TIM_CHANNEL_1);/* PWM generation Error */
}void demo_main(void)
{static uint16_t led_timer 0;static uint8_t led_flg 0; if(led_timer (LED_SWITCH_TIMER / FUNCTION_CALL_CYCLE)){led_timer FUNCTION_CALL_CYCLE; }else{led_timer 0;if(led_flg 0){led_flg 1;HAL_GPIO_WritePin(GPIOB,LED_DO_Pin,GPIO_PIN_RESET); // ON LED}else{led_flg 0;HAL_GPIO_WritePin(GPIOB,LED_DO_Pin,GPIO_PIN_SET); // OFF LED} }}4 测试结果
PWM信号占空比30%一个周期100ms。 结尾
获取更多“汽车电子资讯”和“工具链使用”
请关注CSDN博客“汽车电子助手”做您的好助手。