资源简介
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
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
- stm32通过DMA方式采集ADC数据
- 意法半导体STM全系列微控制器STM32ST
- 基于STM32芯片的SX1278 驱动 LORA.rar
- STM32的PCB封装库,以及原理图库,48
- SX1280.rar
评论
共有 条评论