• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: STM32  

资源简介

STM32F103VET6,流水灯,、呼吸灯、小车寻迹、外部中断、定时器

资源截图

代码片段和文件信息

#include “stm32f10x.h“
#include “stm32f10x_gpio.h“

void RCC_Configuration(void);
void TIM_GPIO_Config(void);
void PWM_Mode_Config(void);
void DelayUs(uint16_t temp);

int main(void)
{
u8 led_fx=1;//灯亮的方向,有亮到暗,和暗到亮,呼吸灯就是这样渐变的
u16 led_dt=0;//占空比
RCC_Configuration();
TIM_GPIO_Config();
PWM_Mode_Config();

while(1)
{
DelayUs(12000);
if(led_fx==1)//
{
led_dt++;
}
else{led_dt--;}
if(led_dt>100)//下面程序的定时周期是100,所以led_dt加到100就自减到0,也就是pwm输出高/低电平持续时间的长短,
led_fx=0;

if(led_dt==0)
led_fx=1;

TIM_SetCompare1(TIM4led_dt);//把led_dt的值送到定时器4的CCR寄存器中改变占空比,就是后面提到的跳变值pulse
}

}

void TIM_GPIO_Config(void)//配置的是PB6端口的复用推挽输出,因为输出PWM波
{

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB&GPIO_InitStructure);

}

void RCC_Configuration(void)
{

SystemInit();//初始化系统时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIOENABLE); //使能端口B时钟和复用功能时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4ENABLE); //使能定时器时钟

}

void PWM_Mode_Config(void)

{

u32 CCR2_Val;
TIM_TimebaseInitTypeDef TIM_TimebaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimebaseStructure.TIM_Prescaler = 1; //预分频器为1就是定时器的工作频率为36M,否则(为0或者其他的数时TIMclock=72M/(pres+1))为72M
TIM_TimebaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimebaseStructure.TIM_Period =99; //36M/(99+1)=360K 计数值
TIM_TimebaseStructure.TIM_ClockDivision = 0x0;
TIM_TimebaseInit(TIM4&TIM_TimebaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM1模式
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //允许输出
TIM_OCInitStructure.TIM_Pulse = CCR2_Val; //跳变值,当计数器的值小于此值时,输出电平极性发生跳变,即决定占空比
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //小于设置的跳变值时输出低电平
TIM_OC1Init(TIM4 &TIM_OCInitStructure);//初始化捕获比较寄存器
TIM_OC1PreloadConfig(TIM4 TIM_OCPreload_Enable);//使能捕获比较重装载
TIM_ARRPreloadConfig(TIM4 ENABLE);//使能重装载,可以连续输出
TIM_Cmd(TIM4ENABLE); //使能定时器

}
void DelayUs(uint16_t temp)
{
uint16_t i = 1;
while(temp--)
{
for(i = 0;i < 10;i++);
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2495  2016-12-14 10:24  STM32程序\呼吸灯.c

     文件       1617  2016-12-14 10:25  STM32程序\外部中断.c

     文件       1570  2016-12-14 10:25  STM32程序\定时器.c

     文件       2544  2016-12-14 10:26  STM32程序\小车循迹.C

     文件       7805  2016-12-14 10:37  STM32程序\总程序.c

     文件       2016  2016-12-14 10:22  STM32程序\按键.c

     文件       1650  2016-12-14 10:26  STM32程序\流水灯.c

     目录          0  2016-12-14 10:37  STM32程序

----------- ---------  ---------- -----  ----

                19697                    8


评论

共有 条评论