zeshoufx的个人空间 https://bbs.21ic.com/?2605330 [收藏] [复制] [RSS]

日志

基于AT32F403ZGT6呼吸灯的实现

已有 51204 次阅读2019-5-24 14:52 |系统分类:ARM

一、主控介绍
AT32F403系列使用高性能的ARM ® Cortex ® -M4F 32位的RISC内核,工作频率为200 MHz,
Cortex ® -M4F内核带有单精度浮点运算单元(FPU),支持所有ARM ® 单精度数据处理指令和数据类
型。它还具有一组DSP指令和提高应用安全性的一个存储器保护单元(MPU)。
AT32F403系列内置高速存储器(高达1024 K字节的内存和96+128 K字节的SRAM),并可使用外部存
储器(高达16 M字节的SPI闪存),丰富的增强I/O端口和联接到两条APB总线的外设。
器件包含3个12位的ADC、8个通用16位定时器、2个通用32位定时器和多达3个PWM定时器,还包
含标准和先进的通信接口:多达3个I 2 C接口、4个SPI接口(复用为I 2 S接口)、2个SDIO接口、5个
USART接口、1个USB接口和1个CAN接口。
AT32F403系列工作于-40 °C至+85 °C的温度范围,供电电压2.6 V至3.6 V,省电模式保证低功耗应
用的要求。
这些丰富的外设配置,使得AT32F403系列微控制器适合于多种应用场合:
  消费类产品
− 云台稳定器
− LED/灯光控制
− 智能家居应用
− 电容式指纹辨识
− 2D微型打印机
− 四轴飞行器
  物联网应用
− 物联网传感器节点/网关
− RF无线模块
  工业自动化
− 人机界面
− 可程编逻辑控制器
− 机器人控制
− 3D打印机
− 充电桩/BMS
  电机控制
− BLDC/PMSM电机控制
− 变频器
− 伺服电机控制
二、PWM程序
#include "breath_led.h"


void breath_led_config(u16 perd,u16 psc)
{
        GPIO_InitType GPIO_InitStructure;
        TMR_TimerBaseInitType TMR_TimerBaseInitStructure;
        TMR_OCInitType TMR_OCInitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_TMR4,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO,ENABLE);
       
        GPIO_PinsRemapConfig(GPIO_Remap_TMR4,ENABLE);
       
        GPIO_InitStructure.GPIO_MaxSpeed=GPIO_MaxSpeed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pins=GPIO_Pins_13|GPIO_Pins_14|GPIO_Pins_15;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
       
        TMR_TimerBaseInitStructure.TMR_ClockDivision=TMR_CKD_DIV1;
        TMR_TimerBaseInitStructure.TMR_CounterMode=TMR_CounterDIR_Up;
        TMR_TimerBaseInitStructure.TMR_DIV=0;
        TMR_TimerBaseInitStructure.TMR_Period=perd;
        TMR_TimerBaseInitStructure.TMR_RepetitionCounter=0;
        TMR_DIVConfig(TMR4,psc,TMR_DIVReloadMode_Update);
        TMR_TimeBaseInit(TMR4,&TMR_TimerBaseInitStructure);
       
        TMR_OCInitStructure.TMR_OCIdleState=TMR_OCIdleState_Set;
        TMR_OCInitStructure.TMR_OCMode=TMR_OCMode_PWM1;
        TMR_OCInitStructure.TMR_OutputState=TMR_OutputState_Enable;
        TMR_OCInitStructure.TMR_Pulse=0;
        TMR_OCInitStructure.TMR_OCPolarity=TMR_OCPolarity_Low;
        TMR_OC2Init(TMR4,&TMR_OCInitStructure);
       
        TMR_OCInitStructure.TMR_OCIdleState=TMR_OCIdleState_Set;
        TMR_OCInitStructure.TMR_OCMode=TMR_OCMode_PWM1;
        TMR_OCInitStructure.TMR_OutputState=TMR_OutputState_Enable;
        TMR_OCInitStructure.TMR_Pulse=0;
        TMR_OCInitStructure.TMR_OCPolarity=TMR_OCPolarity_Low;
        TMR_OC3Init(TMR4,&TMR_OCInitStructure);
       
        TMR_OCInitStructure.TMR_OCIdleState=TMR_OCIdleState_Set;
        TMR_OCInitStructure.TMR_OCMode=TMR_OCMode_PWM1;
        TMR_OCInitStructure.TMR_OutputState=TMR_OutputState_Enable;
        TMR_OCInitStructure.TMR_Pulse=0;
        TMR_OCInitStructure.TMR_OCPolarity=TMR_OCPolarity_Low;
        TMR_OC4Init(TMR4,&TMR_OCInitStructure);
       
        TMR_ARPreloadConfig(TMR4,ENABLE);
       
        TMR_OC2PreloadConfig(TMR4,ENABLE);
        TMR_OC3PreloadConfig(TMR4,ENABLE);
        TMR_OC4PreloadConfig(TMR4,ENABLE);
       
        TMR_Cmd(TMR4,ENABLE);
}





路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)