- 博客(12)
- 收藏
- 关注
原创 STM32 高级定时器PWM输入模式实验
输入的PWM信号从TIMx_CH1中进入,经过TIX,其中IC1和IC2都被映射到同一个TIX上,因此我们可以选择TI1FP1为上升沿触发,TI1FP2为下降沿触发。当信号第一次被上升沿触发时,从模式控制器选择复位模式,此时CNT=0,然后接收到下降沿信号时,产生中断,CNT的数被保存到捕获/比较寄存器2中,当再次接收到上升沿时,再次产生中断,将此时CNT的计数保存至捕获/比较寄存器1中。2.为什么当PC6为输入口时,模式设置的是为复用推挽(我认为是input,但是原子哥设置的是复用推挽,我不理解);
2023-04-12 17:02:11 497 1
原创 STM32 高级定时器互补输出带死区实验
死区:当OCx的电平已经从0跳变为1时,OCNx的电平还未发生跳变,会产生一段时间的延迟后再进行跳变,这段延迟的时间我们称为死区时间,主要是为了克服电路中由于元器件产生的时间延迟,比如在H桥控制的正反转电机中。依据我们给的参数,arr=1000-1,psc=90-1,因此是以1khz为频率计数,并且死区计数为100,比较值为700-1,由此我们算出DT = 2.22。互补输出是指,在比较/捕获输出部分,有OCx和OCNx两条通道,两条通道可以输出互补的信号;大约是4us/2=2us。最后由示波器观察波形。
2023-04-10 13:16:11 1486
原创 STM32 高级定时器的输出/比较模式
输出比较模式选择翻转,当CNT=CCRX,OCxREF电平翻转。这个例程没什么难度,唯一需要的就是示波器。捕获/比较初始化函数。
2023-04-10 12:36:39 477 1
原创 通用定时器输入捕获
1.HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim):作用为捕获中断发生时执行,上升沿或者下降沿中断触发。2.HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim):作用为更新中断(溢出)发生时执行。即将参数初始化,开启时钟,设置NVIC中断优先级,中断服务函数等。溢出时间Tout = N*(ARR+1)+CCRx2 (us)通用定时器捕获脉冲原理(while循环所表达的)
2023-04-04 15:20:40 3493
原创 Stm32使用通用定时器来控制pwm输出
hal库的函数使用使得我对寄存器的具体作用抽象了,还是需要好好去了解一下每个寄存器的用处以及通用定时器的工作流程。Msp回调函数:PB0复用为TIM3_CH3需要使用GPIO_Initure.Alternate申明一下。因为使用的是hal库,因此具体的一些寄存器的功能作用只是了解了一下。2.外部时钟1 引脚TIX CH1/CH2提供。1.内部时钟(CK_INT) APB总线提供。捕获/比较预装载寄存器 ————影子寄存器。3.外部时钟2 ETR TIMX_ETR。
2023-03-30 20:02:29 175
原创 基本定时器控制绿灯亮灭(TIM6)
2.中断服务函数一定要在.s文件中找,因为TIM6的通道有和DAC复用,一开始写的中断服务函数为TIM6_IRQHandler(void),死活程序跑不对,后面改成TIM6_DAC_IRQHandler(void)就对了。void TIM6_DAC_IRQHandler(void)// TIM6_DAC_IRQHandler //中断服务函数。void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) //MSP函数。1.句柄申明在.h文件申明时一定要加分号!
2023-03-29 16:36:21 466
原创 Stm32 窗看门狗程序
1.一开始if判断放在wwdg_init()前,而wwdg_init()中有HAL_WWDG_Start_IT()函数将窗开门狗开启了,加上后面的delay_ms(500),导致直接进入0x3F所产生的中断了,一直产生了复位,只是不断显示第一句话。如果去掉delay的话,显示的为一个周期的语句,即进入while(1)中不断循环了,因满足了喂狗的时间范围,所以只显示“窗口看门狗复位+请在窗口期喂狗”。因此协调delay与函数之间的关系往往决定了程序是否能正常运行。
2023-03-28 19:53:04 164
原创 Stm32 独立看门狗程序
溢出时间Tout=(prer*rlr)/freq(iwdg);hal库将1-5步直接放入hal_init函数里了;如果使用寄存器的话,1-5步需要逐步初始化;
2023-03-27 20:48:47 99
原创 串口通信,通过串口接受或发送一个字符
void HAL_UART_MspInit(UART_HandleTypeDef *huart) //设置GPIO和中断优先级。void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//回调函数。
2023-03-25 13:27:39 246
原创 Stm32 通过外部中断控制一个灯的亮灭
中断服务函数 //IRQ和IRO是两个函数!3)、初始化 HAL_GPIO_Init(端口号,结构体地址);基于跑马灯实验来改写,写一个外部中断函数来控制灯的亮灭。2)、配置GPIO 参数。3、设置中断线优先级,是能中断线。1、设置中断优先级分组。4、编写中断服务函数。
2023-03-21 14:52:58 415
原创 Stm32F429 GPIO——用按键控制灯的亮灭 KEY_UP控制绿灯,KEY2控制红灯
程序仍然有一些小问题,如何去同时让key_up和key2去控制灯的亮灭,而不是只能单独控制,在一个使用的时候另一个就失效了。KEY_UP为高电平有效,所以下拉;KEY0,KEY1,KEY2为低电平有效,所以上拉。扫描按键是否按下的函数key_scan();PB0为绿灯,PB1为红灯。
2023-03-19 15:55:06 786
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人