发新帖我要提问
123
返回列表
打印
[其他ST产品]

newlab平台stm32总结

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
41
纠结的那些年|  楼主 | 2023-8-26 18:05 | 只看该作者 回帖奖励 |倒序浏览
用途
温度光照传感器
使用的是 temp_light.c temp_light.h源文件
实验步骤:
1.初始化温度光照
2.使用GetTemp函数获取温度
3.使用GetLight函数获取光照
接线:
温度输出口:PC0
光照输出口:PC1

使用特权

评论回复
42
纠结的那些年|  楼主 | 2023-8-26 18:05 | 只看该作者
uint8_t GetTemp(){
        uint16_t temp;
        temp=GetADC_Time(TEMP_CH,10);
        printf("temp adc value:%d\r\n",temp);
        return calculateTemperature(calculateResValue(temp));
}

/***************************************************************
  *        @brief        获取一次光照值,以百分比的形式计算
  *        @param       
  *        @retval        float 光照值
****************************************************************/
//
float GetLight(){
        uint16_t        light;
        light=GetADC_Time(LIGHT_CH,10);
        printf("light adc value:%d\r\n",light);
        return 100-((float)light*1000/4096)*100/1000;
}

使用特权

评论回复
43
纠结的那些年|  楼主 | 2023-8-26 18:05 | 只看该作者
#include "usart1.h"
#include "delay.h"
#include <stdio.h>
#include "temp_light.h"

int main(){
        Byte temp[20];
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Usart1_Init(115200);
        delay_init();
        TEMP_LIGHT_Init();
        printf("runnning...\r\n");
        while(1){
                printf("temp:%d\r\n",GetTemp());
                printf("light:%d\r\n",GetLight());
                delay_ms(1000);
        }
}

使用特权

评论回复
44
纠结的那些年|  楼主 | 2023-8-26 18:05 | 只看该作者
五、DAC输出
步骤:
1.设置系统时钟
2.初始化DAC
3.DAC_OutVoltage(float Voltage)设置引脚输出电压值

使用特权

评论回复
45
纠结的那些年|  楼主 | 2023-8-26 18:06 | 只看该作者
接线:
DAC输出口
DAC_OUT1–PA4
DAC_OUT2–PA5

使用特权

评论回复
46
纠结的那些年|  楼主 | 2023-8-26 18:06 | 只看该作者
void DAC_Configuration(void)
{
  
        GPIO_InitTypeDef GPIO_InitStructure;
        DAC_InitTypeDef DAC_InitType;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );          //使能PORTA通道时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );          //使能DAC通道时钟

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                                 // 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                  //模拟输入(STM32没有模拟输出模式,这里只好配置为模拟输入)
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
                                       
        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通道1

        DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC1
  
  DAC_SetChannel1Data(DAC_Align_12b_R, 0);  //12位右对齐数据格式设置DAC值,默认输出0V

}
void DAC2_Configuration(void)
{
  
        GPIO_InitTypeDef GPIO_InitStructure;
        DAC_InitTypeDef DAC_InitType;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );          //使能PORTA通道时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );          //使能DAC通道时钟

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 // 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                  //模拟输入(STM32没有模拟输出模式,这里只好配置为模拟输入)
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
                                       
        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_2,&DAC_InitType);         //初始化DAC通道2

        DAC_Cmd(DAC_Channel_2, ENABLE);  //使能DAC2
  
  DAC_SetChannel2Data(DAC_Align_12b_R, 0);  //12位右对齐数据格式设置DAC值,默认输出0V

}

//设置通道1输出电压
// Voltage----电压值,取值范围为0~3.3V
void DAC1_OutVoltage(float Voltage)
{
        uint16_t data;
        data=(uint16_t)(Voltage*4095/3.3);//换算为12位整数值
        DAC_SetChannel1Data(DAC_Align_12b_R,data);//12位右对齐数据格式设置DAC值
        DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE); //启动转换
}

void DAC2_OutVoltage(float Voltage)
{
        uint16_t data;
        data=(uint16_t)(Voltage*4095/3.3);//换算为12位整数值
        DAC_SetChannel2Data(DAC_Align_12b_R,data);//12位右对齐数据格式设置DAC值
        DAC_SoftwareTriggerCmd(DAC_Channel_2,ENABLE); //启动转换
}

使用特权

评论回复
47
纠结的那些年|  楼主 | 2023-8-26 18:06 | 只看该作者
#include "stm32f10x.h" //STM32
#include "sys.h"
#include "delay.h"
#include "usart.h"

#include "dac.h"


int main (void){
        float voltage=2;
        delay_ms(500); //
        RCC_Configuration(); // 系统时钟初始化
        DAC_Configuration(); //DAC初始化设置
        USART1_Init(115200);
        DAC1_OutVoltage(voltage);
        while(1){
                while(1)
        {
               
                delay_ms(1000);
               
                if (voltage<3.3)
                {voltage+=0.1;}
                else
                {voltage=0;}
                //voltage=3.3;
                DAC1_OutVoltage(voltage);
                while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
                printf("DAC输入的数字为:%d",(uint16_t)(voltage*4095/3.3));
                printf("DAC输出电压为:%.3f\n",voltage);
        }
        }
}

使用特权

评论回复
48
纠结的那些年|  楼主 | 2023-8-26 18:06 | 只看该作者
比赛总结:
熟悉stm32各个引脚的初始化,会各个模块的各种逻辑使用

使用特权

评论回复
49
houcs| | 2023-8-26 23:12 | 只看该作者
可使用PCTOLCD生成需要的点阵

使用特权

评论回复
50
Wordsworth| | 2024-9-11 07:29 | 只看该作者

模块电源选购灌封材料的时候,需要注意导热系数要能达到电子部件散热的需求,不过粘接能力不太强

使用特权

评论回复
51
Clyde011| | 2024-9-11 08:32 | 只看该作者

A、B组分先分别用手动或机械进行充分搅拌,让A、B灌封料充分融合

使用特权

评论回复
52
公羊子丹| | 2024-9-11 09:25 | 只看该作者

可能击穿开关器件,

使用特权

评论回复
53
万图| | 2024-9-11 10:28 | 只看该作者

如果想要让它正常工作且不会损坏

使用特权

评论回复
54
Uriah| | 2024-9-11 11:31 | 只看该作者

前模块电源灌封时用的最多的是加成型有机灌封硅胶

使用特权

评论回复
55
帛灿灿| | 2024-9-11 13:27 | 只看该作者

电阻属于一个普通的元件

使用特权

评论回复
56
Bblythe| | 2024-9-11 14:30 | 只看该作者

并且考虑到TVS相同的尺寸

使用特权

评论回复
57
周半梅| | 2024-9-11 16:26 | 只看该作者

当异常过压消失,恢复至高阻态

使用特权

评论回复
58
Pulitzer| | 2024-9-11 17:29 | 只看该作者

微控制器、数字信号控制器和处理器都具有内部的ESD钳位二极管

使用特权

评论回复
59
童雨竹| | 2024-9-11 19:25 | 只看该作者

ESD电压一般超过导通电压

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则