资源简介
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
相关资源
- 基于STM32F103的SHT11温湿度传感器采集程
- 基于STM32的闹钟程序
- STM32的红外遥控程序,亲测能用
- STM32的待机唤醒程序,亲测能用
- STM32的RTC实时时钟程序,亲测能用
- stm32 外部上升沿触发ADC采集
- STM32的傅里叶算法
- STM32F103ZET6 原理图文件SCH 。protel99s
- stm32固件库改写文件
- stm103_falsh读写
- STM32F103 TFT彩屏显示图片和汉字字符(
- STM32F103 TFT彩屏显示汉字字符(取摸
- STM32雕刻机、CNC源代码
- stm32f4探索者开发板原理图
- STM32Cube-USART
- STM32F10Xlib.h系列的固件库
- STM32F030-uCOSIII
- 开源三轴无刷云台算法STM32程序带注释
- STM32 d的图形GUI界面代码
- STM32驱动max30102和MLX90614程序
- stm32 IAP源码
- STM32F407 6288语音模块程序
- STM32-实时时钟和闹钟程序.pdf
- 声音定位系统
- STM32定时器
- 基于STM32图像采集程序
- STM32单片机WS2812B驱动程序灯效程序
- stm32串口调试助手
- STM32F103VET6最小系统板原理图
- 嵌入式网络那些事-STM32物联实战 百度
评论
共有 条评论