用EN28J60网络专用接口芯片,通过SPI与STM32F103进行通信
2021-09-26 17:32:43 1.64MB STM32
1
移植lorawan到stm32f051单片机,实现lorawan基本功能。待测试
2021-09-23 18:30:35 5.65MB lorawan stm32 sx1276
1
放置KEIL工程下,可根据keil工程快速建立VS工程,使用VS进行keil mdk软件开发
2021-09-16 17:40:15 44KB 工具
1
著名开源电调BLHeli_S 的keil工程,可以直接使用MDK编译生成固件,方便开发者使用,为了更好的交流,请按照文档说明进行
2021-09-10 22:46:59 1.14MB 电调 BLS Keil工程
1
stm32f030c8t6低功耗standby模式3.1微安uA,在3.3V侧,进入待机模式之后,测得功耗为3.1uA,基本达到芯片规格书给出的结果。亲测,上传为keil工程文件!
2021-09-08 11:21:05 3.36MB stm32 低功耗 standby
1
STM32F407单片机 24bit_ADC_电压采集+16bit_DAC_电压输出实验KEIL工程源码+AD7190 ADC模块+AD5689R DAC模块硬件PDF原理图
STM32F407单片机16bit_DAC_AD5689模拟量(0V~10V)电压输出实验KEIL工程源码: int main(void) { uint16_t data=0; double temp,opa; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); KEY_GPIO_Init(); printf("硬石DAC(AD5689)模块模拟量电压输出测试\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { if(KEY1_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)data*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值为:0~0xFFFF对应AD5689输出为0~2.5V //本例程是输出0V~10V,这个功能主要是靠运放实现,特殊的电路使得: //AD5689输出0V时对应运放输出0V,AD5689输出2.5V对应运放输出10V //(上面虽说是10V,实际上应该是 2.5V*opa(运放放大倍数),这里opa=40.2K/10K=4.02) //所以使得程序:data值为0时运放输出0V,data为0xFFFF时输出运放输出10V //temp=data/0xFFFF*2.5*1000*opa printf("data:%d->%0.3fV\n",data,temp/1000); } if(KEY2_StateRead()==KEY_DOWN) { if(data%0.3fV\n",data,temp/1000); } HAL_Delay(50);
STM32F407单片机16bit_DAC_AD5689模拟量(-10V~10V)电压输出实验KEIL工程源码: int main(void) { uint16_t data=0xFFFF/2; double temp,opa; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); KEY_GPIO_Init(); printf("硬石DAC(AD5689)模块模拟量电压输出测试\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { if(KEY1_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)(data*2-0xFFFF)*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值为:0~0xFFFF对应AD5689输出为0~5V //本例程是输出-10V~10V,这个功能主要是靠运放实现,特殊的电路使得: //AD5689输出0V时对应运放输出-10V,AD5689输出2.5V对应运放输出0V,AD5689输出5V对应运放输出10V //(上面虽说是10V,实际上应该是 2.5V*opa(运放放大倍数),这里opa=40.2K/10K=4.02) //所以使得程序:data值为0时运放输出-10V, data为0xFFFF/2时输出运放输出0V,data为0xFFFF时输出运放输出10V //temp=(data-0xFFFF/2)/(0xFFFF/2)*2.5*1000*opa printf("data:%d->%0.3fV\n",data,temp/1000); } if(KEY2_StateRead()==KEY_DOWN) { if(data<1000) data=1000; data -=1000;
STM32F407单片机24bit_ADC_AD7190称重模块+16bit_DAC_电压输出实验KEIL工程源码 int main(void) { uint16_t data=0xFFFF/2; double temp,opa; float data_temp; int32_t weight_count; uint8_t cali_flag=0; /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); /* 初始化LED */ LED_GPIO_Init(); KEY_GPIO_Init(); /* 初始化BEEP */ BEEP_GPIO_Init(); if(AD7190_Init()==0) { printf("获取不到 AD7190 !\n"); while(1) { HAL_Delay(1000); if(AD7190_Init()) break; } } printf("检测到 AD7190 !\n"); weight_ad7190_conf(); HAL_Delay(500); weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); printf("硬石DAC(AD5689)模块模拟量电压输出\n"); AD5689_Init(); AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); printf("data:%d\n",data); opa=OPA_RES_R2/OPA_RES_R1; while(1) { weight_count=weight_ad7190_ReadAvg(3); data_temp=weight_count-weight_Zero_Data; weight=data_temp*1000/weight_proportion; printf("重量:%d->%.2f\n",weight_count,weight); HAL_Delay(200); if(KEY1_StateRead()==KEY_DOWN) // 清零 { weight_Zero_Data = weight_ad7190_ReadAvg(6); printf("zero:%d\n",weight_Zero_Data); cali_flag=1; } if(KEY2_StateRead()==KEY_DOWN) // 校准:必须先按“清零”键,然后把20g砝码放在称上,按下校准键 { if(cali_flag) { weight_count = weight_ad7190_ReadAvg(6); weight_proportion=(weight_count-weight_Zero_Data)*1000/100; printf("weight_proportion:%d\n",weight_proportion); } cali_flag=0; } if(KEY3_StateRead()==KEY_DOWN) { if(data>(0xFFFF-1000)) data=(0xFFFF-1000); data +=1000; AD5689_WriteUpdate_DACREG(DAC_A,data); AD5689_WriteUpdate_DACREG(DAC_B,0xFFFF-data); temp=(double)(data*2-0xFFFF)*2500*opa/0xFFFF; //temp为目标电源值,这里先放大1000倍(方便计算而已),等后面显示再还原 //data是数字量DA值,当data取值
STM32F407IGT6单片机USART串口通信实验例程9个合集KEIL工程源码+文档说明: YSF4_HAL-008. USART1-同步异步串行通信.rar YSF4_HAL-009. USART2-同步异步串行通信.rar YSF4_HAL-010. USART6-同步异步串行通信.rar YSF4_HAL-011. UART4-异步串行通信.rar YSF4_HAL-012. UART5-异步串行通信(RS232).rar YSF4_HAL-013. USART3-RS485双机通信.rar YSF4_HAL-014. RS485接发测试.rar YSF4_HAL-015. USART-调试串口.rar YSF4_HAL-016. USART-指令控制.rar