stm32系列--DAC的应用

 

#include "bsp_dac.h"
#include "math.h"
//#include "stm32f10x_tim.h"
//#include "stm32f10x_dma.h"
//#include "stm32f10x_dac.h"
//正弦波单个周期的点数
#define POINT_NUM 32
#define angle 3.1415/64/* 初始波形数据 ---------------------------------------------------------*/
uint16_t Sine12bit[128] = {
2048,
2148,2248,2348,2447,2545,2642,2737,2831,
2923,3013,3100,3185,3267,3347,3423,3496,
3565,3631,3692,3750,3804,3854,3899,3940,
3976,4007,4034,4056,4073,4086,4093,4095,
4093,4086,4073,4056,4034,4007,3976,3940,
3899,3854,3804,3750,3692,3631,3565,3496,
3423,3347,3267,3185,3100,3013,2923,2831,
2737,2642,2545,2447,2348,2248,2148,2048,
1948,1848,1748,1649,1551,1454,1359,1265,
1173,1083,996,911,829,749,673,600,
531,465,404,346,292,242,197,156,
120,89,62,40,23,10,3,1,
3,10,23,40,62,89,120,156,
197,242,292,346,404,465,531,600,
673,749,829,911,996,1083,1173,1265,
1359,1454,1551,1649,1748,1848,1948
};uint16_t TriangleWave12bit[128] = {
2048,
2148,2248,2348,2447,2545,2642,2737,2831,
2923,3013,3100,3185,3267,3347,3423,3496,
3565,3631,3692,3750,3804,3854,3899,3940,
3976,4007,4034,4056,4073,4086,4093,4095,
4093,4086,4073,4056,4034,4007,3976,3940,
3899,3854,3804,3750,3692,3631,3565,3496,
3423,3347,3267,3185,3100,3013,2923,2831,
2737,2642,2545,2447,2348,2248,2148,2048,
1948,1848,1748,1649,1551,1454,1359,1265,
1173,1083,996,911,829,749,673,600,
531,465,404,346,292,242,197,156,
120,89,62,40,23,10,3,1,
3,10,23,40,62,89,120,156,
197,242,292,346,404,465,531,600,
673,749,829,911,996,1083,1173,1265,
1359,1454,1551,1649,1748,1848,1948
};uint16_t PulseWave12bit[128] = {
2048,
2148,2248,2348,2447,2545,2642,2737,2831,
2923,3013,3100,3185,3267,3347,3423,3496,
3565,3631,3692,3750,3804,3854,3899,3940,
3976,4007,4034,4056,4073,4086,4093,4095,
4093,4086,4073,4056,4034,4007,3976,3940,
3899,3854,3804,3750,3692,3631,3565,3496,
3423,3347,3267,3185,3100,3013,2923,2831,
2737,2642,2545,2447,2348,2248,2148,2048,
1948,1848,1748,1649,1551,1454,1359,1265,
1173,1083,996,911,829,749,673,600,
531,465,404,346,292,242,197,156,
120,89,62,40,23,10,3,1,
3,10,23,40,62,89,120,156,
197,242,292,346,404,465,531,600,
673,749,829,911,996,1083,1173,1265,
1359,1454,1551,1649,1748,1848,1948
};void dac1_change_to_sine(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;                    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Sine12bit;                DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            DMA_InitStructure.DMA_BufferSize = 128;                                                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel3, &DMA_InitStructure);    
}
void dac2_change_to_sine(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2;                    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Sine12bit;                DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            DMA_InitStructure.DMA_BufferSize = 128;                                                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel4, &DMA_InitStructure);
}void dac1_change_to_Triangle(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;                    //外设数据地址DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&TriangleWave12bit;                //内存数据地址 Sine12bitDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            //数据传输方向内存至外设DMA_InitStructure.DMA_BufferSize = 128;                                    //缓存大小为POINT_NUM字节                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                //外设数据地址固定    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    //内存数据地址自增DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    //外设数据以字为单位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    //内存数据以字为单位    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    //循环模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            //高DMA通道优先级DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel3, &DMA_InitStructure);    
}void dac2_change_to_Triangle(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2;                    //外设数据地址DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&TriangleWave12bit;                //内存数据地址 Sine12bitDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            //数据传输方向内存至外设DMA_InitStructure.DMA_BufferSize = 128;                                    //缓存大小为POINT_NUM字节                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                //外设数据地址固定    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    //内存数据地址自增DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    //外设数据以字为单位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    //内存数据以字为单位    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    //循环模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            //高DMA通道优先级DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel4, &DMA_InitStructure);
}void dac1_change_to_Pulse(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;                    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&PulseWave12bit;                DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            DMA_InitStructure.DMA_BufferSize = 128;                                                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel3, &DMA_InitStructure);
}
void dac2_change_to_Pulse(void)
{DMA_InitTypeDef  DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2;                    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&PulseWave12bit;                DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            DMA_InitStructure.DMA_BufferSize = 128;                                                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;DMA_Init(DMA2_Channel4, &DMA_InitStructure);    
}void set_Triangle_duty(int duty)// 例如duty=5050,占空比为50.5%
{int i;    int low_num=0;int hight_num=0;    hight_num = 128*duty/10000;    low_num=128-hight_num;    for(i=0;i<128;i++){if(i<=hight_num-1)TriangleWave12bit[i]= (uint16_t)4095/hight_num*i;elseTriangleWave12bit[i]= (uint16_t)(4095-4095/low_num*(i-hight_num));    }
}
void set_Pulse_duty(int duty) // 例如duty=20,占空比为20%
{int i;    int low_num=0;int hight_num=0;    hight_num = 128*duty/10000;    low_num=128-hight_num;for(i=0;i<128;i++){if(i<=low_num-1)PulseWave12bit[i]= 0;elsePulseWave12bit[i]= (uint16_t)(4095);    }
}
void set_sine_vpp(float vpp)
{int i;    for(i=0;i<128;i++){Sine12bit[i]= (uint16_t)((sin(i*angle)+1)/2*vpp*4096/3.3);        }}void set_Triangle_vpp(float vpp)
{int i;    for(i=0;i<128;i++){if(i<=63)TriangleWave12bit[i]= (uint16_t)vpp/3.3*4096/64*i;elseTriangleWave12bit[i]= (uint16_t)(vpp/3.3*4096-vpp/3.3*4096/64*(i-64));    }            
}void set_Pulse_vpp(float vpp)
{int i;    for(i=0;i<128;i++){if(i<=63)PulseWave12bit[i]= 0;elsePulseWave12bit[i]= (uint16_t)(vpp/3.3*4096);    }            
}void set_peroid(int period)
{TIM_Cmd(TIM6, DISABLE);TIM6->ARR=period;TIM_Cmd(TIM6, ENABLE);    
//    TIM_Cmd(TIM7, DISABLE);
//    TIM7->ARR=period;
//    TIM_Cmd(TIM7, ENABLE);
}void DAC1_GPIO_config(void)
{    GPIO_InitTypeDef GPIO_InitStructure;/* 使能GPIOA时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    /* DAC的GPIO配置,模拟输入 */GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);}
void DAC2_GPIO_config(void)
{    GPIO_InitTypeDef GPIO_InitStructure;/* 使能GPIOA时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    /* DAC的GPIO配置,模拟输入 */GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5; //pa5GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);}/*** @brief  配置DAC通道1的TIM* @param  无* @retval 无*/
void DAC1_TIM_Config(void)
{TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;/* 使能TIM6时钟,TIM2CLK 为72M */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);/*定时器初始周期*/TIM_TimeBaseStructure.TIM_Period = 0X06;   //562500/25000+1=23             40KHZ                            TIM_TimeBaseStructure.TIM_Prescaler = 0x1;                                   //预分频,不分频 72M / (1+1) =36MTIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                            //时钟分频系数TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;      //向上计数模式TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);/* 配置TIM6触发源 */TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);/* 使能TIM6 */TIM_Cmd(TIM6, ENABLE);
}
/*** @brief  配置DAC通道2的TIM* @param  无* @retval 无*/
void DAC2_TIM_Config(void)
{TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;/* 使能TIM6时钟,TIM2CLK 为72M */RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);/*定时器初始周期*/TIM_TimeBaseStructure.TIM_Period = 0X17;                                            TIM_TimeBaseStructure.TIM_Prescaler = 0x1;                                   //预分频,不分频 72M / (1+1) =36MTIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                            //时钟分频系数TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;      //向上计数模式TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);/* 配置TIM7触发源 */TIM_SelectOutputTrigger(TIM7, TIM_TRGOSource_Update);/* 使能TIM7 */TIM_Cmd(TIM7, ENABLE);
}/*** @brief  配置DMA* @param  无* @retval 无*/
void DAC1_DMA_Config(void)
{    DMA_InitTypeDef  DMA_InitStructure;DAC_InitTypeDef  DAC_InitStructure;/* 使能DMA2时钟 */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);/* 使能DAC时钟 */    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);/* 配置DAC 通道1 */DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;                        //使用TIM6作为触发源DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;    //不使用波形发生器DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;    //不使用DAC输出缓冲
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);/* 配置DMA2 */DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1;                    //外设数据地址DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Sine12bit;                //内存数据地址 Sine12bitDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            //数据传输方向内存至外设DMA_InitStructure.DMA_BufferSize = 128;                                    //缓存大小为POINT_NUM字节                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                //外设数据地址固定    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    //内存数据地址自增DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    //外设数据以字为单位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    //内存数据以字为单位    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    //循环模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            //高DMA通道优先级DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                        //非内存至内存模式    
DMA_Init(DMA2_Channel3, &DMA_InitStructure);/* 使能DMA2-14通道 */DMA_Cmd(DMA2_Channel3, ENABLE);/* 使能通道1 由PA4输出 */DAC_Cmd(DAC_Channel_1, ENABLE);/* 使能DAC的DMA请求 */DAC_DMACmd(DAC_Channel_1, ENABLE);
}/*** @brief  配置DMA* @param  无* @retval 无*/
void DAC2_DMA_Config(void)
{    DMA_InitTypeDef  DMA_InitStructure;DAC_InitTypeDef  DAC_InitStructure;/* 使能DMA2时钟 */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);/* 使能DAC时钟 */    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);/* 配置DAC 通道2 */DAC_InitStructure.DAC_Trigger = DAC_Trigger_T7_TRGO;                        //使用TIM6作为触发源DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;    //不使用波形发生器DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;    //不使用DAC输出缓冲
  DAC_Init(DAC_Channel_2, &DAC_InitStructure);/* 配置DMA2 */DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R2;                    //外设数据地址DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Sine12bit;                //内存数据地址 Sine12bitDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                            //数据传输方向内存至外设DMA_InitStructure.DMA_BufferSize = 128;                                    //缓存大小为POINT_NUM字节                                    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                //外设数据地址固定    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                    //内存数据地址自增DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;    //外设数据以字为单位DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                    //内存数据以字为单位    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                    //循环模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                            //高DMA通道优先级DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                        //非内存至内存模式    
DMA_Init(DMA2_Channel4, &DMA_InitStructure);/* 使能DMA2-14通道 */DMA_Cmd(DMA2_Channel4, ENABLE);/* 使能通道1 由PA4输出 */DAC_Cmd(DAC_Channel_2, ENABLE);/* 使能DAC的DMA请求 */DAC_DMACmd(DAC_Channel_2, ENABLE);
}void DAC1_Mode_Init(void)
{DAC1_GPIO_config();DAC1_TIM_Config();    DAC1_DMA_Config();
}void DAC2_Mode_Init(void)
{DAC2_GPIO_config();DAC2_TIM_Config();    DAC2_DMA_Config();
}
DAC1_Mode_Init

 

void sendreplay(void)
{u8 i;unsigned long  period=0;unsigned long  period_us=0;unsigned long  freq=0;unsigned long  freq_temp=0;u16  duty=0;for(i=0;i<24;i++){if(myusart.rcbuf[i] != rcbuf_bak[i]) break;}if(i<24){for(i=0;i<24;i++) rcbuf_bak[i] = myusart.rcbuf[i];freq = (myusart.rcbuf[4]<<8)+    myusart.rcbuf[5];freq_temp =freq;//频率设置统一处理if(freq < _freq_min){freq = _freq_min;}else if(freq > _freq_max ){freq = _freq_max;}period = (int)(_freq_vel/freq - 1);//占空比duty = (myusart.rcbuf[6]<<8)+    myusart.rcbuf[7];period_us = 1000000 / freq;if(myusart.rcbuf[3]==0x01)//确定波形
            {dac1_change_to_sine();set_peroid(period);//占空比就是50%h_period_us = period_us/2;l_period_us = period_us - h_period_us;                    }else if(myusart.rcbuf[3]==0x02){//PA6if(freq_temp < _freq_min){freq_temp = _freq_min;}set_pwm1(freq_temp,duty);period_us = 1000000 / freq_temp;h_period_us = period_us*duty/10000;l_period_us = period_us - h_period_us;    }else if(myusart.rcbuf[3]==0x03){set_Triangle_duty(duty);//无法避免重新计算数组值
                dac1_change_to_Triangle();    set_peroid(period);h_period_us = period_us*duty/10000;l_period_us = period_us - h_period_us;    }}}
sendreplay

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720808.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EDA数据跨网交换解决方案,一文了解!

EDA数据通常与电子设计自动化相关,这是一种利用计算机辅助设计(CAD)软件来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计等流程的技术。以下是一些会涉及到EDA数据的行业:集成电路设计:EDA是集成电路设计流程中不可或缺的工具,设计工程师使用EDA工具…

WebApi过滤器初学习

WebApi 过滤器 Authorization Filters //权限验证 Resource Filters //资源验证 常被用于缓存 Model Binding //模型绑定 Action Filters //行为 常被用于模型验证和日志记录 Exception Filters //异常处理 常被用于错误日志 Result Filters //结果验证 用于三种…

跨越云端,华为云技术专家分享高效跨云迁移实践

跨云场景两端云平台的管理是相对割裂的,这也导致虚拟机的跨云迁移无法像云内热迁移一样无中断,需要通过和云平台解耦的迁移工具来实现。本文分享自华为云社区《【华为云Stack】【大架光临】第18期:跨越云端,华为云Stack的高效跨云迁移实践》,作者: 大架光临。1 背景 在企…

强!推荐一款开源接口自动化测试平台:AutoMeter-API !

在当今软件开发的快速迭代中,接口自动化测试已成为确保代码质量和服务稳定性的关键步骤。 随着微服务架构和分布式系统的广泛应用,对接口自动化测试平台的需求也日益增长。 今天,我将为大家推荐一款强大的开源接口自动化测试平台: AutoMeter-API。 1、介绍 AutoMeter-API是一…

flutter3-weos手机OS系统|Flutter3.22+Getx仿ios桌面管理OA应用

原创自研flutter3.x+getx仿制ios手机桌面UI管理系统模板Flutter3-OS。 flutter3-osx基于最新跨平台技术Flutter3.22+Dart3.4+GetX+fl_chart实战仿IOS风格手机os管理系统。全新自研flutter磁贴式栅格布局引擎、分屏式多页管理、自定义主题壁纸、卡片式桌面小部件、可拖拽式悬浮球…

qt 操作sqlite数据库

添加密码:要有圈住的这一句 原文连接

第二次大作业Blog

目录前言设计与分析踩坑心得改进建议总结 前言知识点:类与对象的应用: 在三次大作业中,类与对象的应用无疑是核心和基础。这充分体现了Java作为一种面向对象编程语言的特性。通过定义类,我们可以创建具有特定属性和行为的对象,从而构建出复杂的程序逻辑。在每次大作业中,…

C#.Net筑基-String字符串超全总结 [深度好文]

字符串是日常编码中最常用的引用类型了,可能没有之一,加上字符串的不可变性、驻留性,很容易产生性能问题,因此必须全面了解一下。字符串是日常编码中最常用的引用类型了,可能没有之一,加上字符串的不可变性、驻留性,很容易产生性能问题,因此必须全面了解一下。01、字符…

类的继承,接口的使用

1-知识点,题量,难度总结 1.this与super的区分与使用,如何正确使用多态(用父类类型创建子类对象,并调用子类中重写父类中的抽象方法)(在大作业5中的第二道修改学生信息中)(第三道中父类向下转型,另外还有子类向上转型)。 2接口的使用,多态的具体体现(例如在第一次家…

The University of Sydney

QS大学排名QS世界大学排名 QS大学学科排名 QS亚洲大学排名 QS商科硕士排名 QS就业竞争力排名 QS全球MBA排名软科ARWU大学排名 泰晤士大学排名 USNEWS大学排名 金融时报(FT)商学院排名 EduRank大学排名 CWUR世界大学排名 武书连大学排名 校友会大学排名 登录 去除广告?下载大…

QS世界大学排名 2025

大学排名 发现 展会活动 留学准备 申请 职业发展中文免费注册排名方法什么是QS之星? QS世界大学排名 2025通过2025年的QS世界大学排名,发现世界顶尖大学。展开In partnership with 排名榜单 排名指标 年份 2025…

chrome浏览器被360导航劫持解决办法

右键单击桌面浏览器图标 点击属性 修改目标,去点360的导航url,ok