惠州seo,南通优化网站怎么收费,2015年做哪个网站致富,个人备案网站可以做电影站吗这里写目录标题 STM32资料包#xff1a; 百度网盘下载链接#xff1a;链接#xff1a;https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码#xff1a;8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑#xff08;1#xff09;主函数编辑#… 这里写目录标题 STM32资料包 百度网盘下载链接链接https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码8888 一、任务描述二、任务实施1、工程文件夹创建2、函数编辑1主函数编辑2ADC初始化函数T_Adc_Init()3设置通道1输出电压函数Dac1_Set_Vol() 3、头文件添加4、头文件编辑4、知识链接1内部温度工作原理2编写步骤 5、工程测试 STM32资料包 百度网盘下载链接链接https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码8888
一、任务描述 二、任务实施
观察电路图: PA4stm32核心板 ———————— D1 使用STM32控制DAC输出实现呼吸灯效果需要配置DAC通道和定时器。调整DAC输出值在定时器中断或循环中实现LED亮度的渐变模拟呼吸灯效果。调整步进和定时器频率可控制呼吸灯速度和平滑度。最终将更新的DAC值应用到通道控制LED亮度
1、工程文件夹创建
步骤1复制工程模板“1_Template”重命名为“14_ADC”。
步骤2修改项目工程名先删除projects文件夹内除了Template.uvprojx文件外的所有内容并修改为“DAC.uvprojx”。并删除output/obj和output/lst中的所有文件。
步骤3运行“PassiveBeep.uvprojx”打开目标选项“Options for Target”中的“Output”输出文件并修改可执行文件名称为“DAC”点击“OK”保存设置。最后点击“Rebuild”编译该工程生成Usart文件。
步骤4复制2_LEDTest中的1_LED的“led”文件复制到hardware中
步骤5在system文件夹中新建一个dac文件夹并在该文件夹下新建dac.c和dac.h两个文件
步骤6工程组文件中添加“dac”文件夹内的所有文件 步骤7工程组文件中添加“led”文件夹内的所有文件
步骤6目标选项添加添加头文件路径。
2、函数编辑
1主函数编辑
实现一个控制DAC输出的功能根据条件逐步调整 dacval 的值以模拟呼吸灯效果或类似的动态模拟信号输出 步骤2循环函数编写 while(1){ delay_ms(100); // 延时100毫秒if ((dacval 4000) (!j)) // 如果dacval等于4000且j为假0j 1;else if (j) // 否则如果j为真1{if (dacval 200) // 如果dacval等于200j 0; // 将j置为假0else dacval - 200; // 否则减少dacval的值200}else // 否则dacval不等于4000且j为假dacval 200; // 增加dacval的值200DAC_SetChannel1Data(DAC_Align_12b_R, dacval); // 12位右对齐格式} 2ADC初始化函数T_Adc_Init()
步骤1初始化DAC
/*********************************************************************Function : 初始化DACParameter : N/AReturn : N/A
**********************************************************************/
void Dac1_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_InitType;/* 使能GPIOA和DAC时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);/* 配置GPIO引脚 */GPIO_InitStructure.GPIO_Pin GPIO_Pin_4; // 设置引脚4PA4为要配置的引脚GPIO_InitStructure.GPIO_Mode GPIO_Mode_AIN; // 设置为模拟输入模式GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 设置引脚速度为50MHzGPIO_Init(GPIOA, GPIO_InitStructure); // 初始化GPIOA的引脚配置为AIN模式GPIO_SetBits(GPIOA, GPIO_Pin_4); // 设置GPIOA的引脚4为高电平/* 配置DAC */DAC_InitType.DAC_Trigger DAC_Trigger_None; // 不使用触发功能 (TEN1 0)DAC_InitType.DAC_WaveGeneration DAC_WaveGeneration_None; // 不使用波形发生DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude DAC_LFSRUnmask_Bit0; // 屏蔽、幅值设置DAC_InitType.DAC_OutputBuffer DAC_OutputBuffer_Disable; // 关闭DAC1输出缓存 (BOFF1 1)DAC_Init(DAC_Channel_1, DAC_InitType);/* 使能DAC通道 */DAC_Cmd(DAC_Channel_1, ENABLE);/* 设置DAC通道1的数据值为012位右对齐格式*/DAC_SetChannel1Data(DAC_Align_12b_R, 0);
} 3设置通道1输出电压函数Dac1_Set_Vol()
/*********************************************************************Function : 设置通道1输出电压Parameter : vol : 输出电压值Return : N/ARead : vol范围0~3300,代表0~3.3V
**********************************************************************/
void Dac1_Set_Vol(uint16_t vol)
{float tempvol;temp/1000;temptemp*4096/3.3;DAC_SetChannel1Data(DAC_Align_12b_R,temp);//12位右对齐数据格式设置DAC值
}3、头文件添加
步骤1dac所需头文件添加
#include .\dac\dac.h
#include stm32f10x_gpio.h
#include stm32f10x_rcc.h
#include stm32f10x_dac.h4、头文件编辑
//bord.h
#ifndef __BORD_H_
#define __BORD_H_
#include system_config.h
#include stm32f10x_dac.h//头文件包含
/*************SYSTEM*****************/
/*#include .\sys\sys.h*/
#include .\delay\delay.h
#include .\usart\usart.h
#include .\timer\timer.h
#include .\dac\dac.h/***********Hardweare***************/
#include led.h/***********Funlibrary***************/#endif 步骤2主函数添加函数的声明
#include main.c/*********************************************************************Function : 程序入口Parameter : N/AReturn : N/A
**********************************************************************/
int main(void)
{ uint8_t j0;uint16_t dacval200;delay_init(); //启动滴答定时器usart1_init(9600); //USART1初始化SystemTinerInit(1000-1,3600-1); //系统时间初始化 定时100msExpLEDInit();Dac1_Init();//DAC初始化delay_ms(500);DAC_SetChannel1Data(DAC_Align_12b_R,0);//初始值为0 printf(初始化成功\r\n);while(1){ delay_ms(100); // 延时100毫秒if ((dacval 4000) (!j)) // 如果dacval等于4000且j为假0j 1;else if (j) // 否则如果j为真1{if (dacval 200) // 如果dacval等于200j 0; // 将j置为假0else dacval - 200; // 否则减少dacval的值200}else // 否则dacval不等于4000且j为假dacval 200; // 增加dacval的值200DAC_SetChannel1Data(DAC_Align_12b_R, dacval); // 12位右对齐格式}
} 步骤2添加STM32Temper的头文件
//STM32Temper.h
#ifndef __STM32TEMPER_H
#define __STM32TEMPER_H
#include stdint.hshort Get_Temperature(void) ;#endif4、知识链接
1内部温度工作原理
STM32内部温度传感器在芯片内部与ADCx_IN16输入通道相连接此通道把传感器输出的电压转换成数字值继而换算成温度值。因此我们只需设置一下内部ADC并激活其内部通道就可以了。
2编写步骤
1、配置ADC 2、获取某个通道值 3、内部温度传感器的值计算
5、工程测试