STM32f407在SPI1模式下读写SD卡(STM32F4_DISCOVERY) SCK=PA5,MISO=PA6,MOSI=PA7,CS=PA4
2021-09-11 10:49:26 13.81MB STM32f407
1
STM32F407 HAL库实现EEPROM功能(实战项目中使用),CubeMX生成初始化函数之后,对于EEPROM的实现,还是需要修改很多内容,从IIC到EEPROM服务函数,都打包在了资料中
2021-09-10 13:54:54 4KB EEPROM STM32 HAL CubeMX
1
Keil.STM32F1,F4,F7,MDK521A的开发环境,用于STM32嵌入式软件开发
2021-09-09 20:27:46 641.81MB STM32f103 STM32f407 STM32F767
1
本人经过一定学习,成功配置了,适用于STM32F407读编码器数值,并附有说明。
2021-09-09 11:56:44 31KB STMF4编码器
1
该代码为stm32f407使用大气压,温湿度,WiFi,PM2.5传感器的程序,可以通过WiFi传输数据或者通过lcd屏进行观看
2021-09-09 10:31:13 1.07MB stm32f407
1
代码有一个驱动代码和一个控制打码,如果在STM32F407上运行,只需要包含同文件、修改引脚、直接调用函数即可,可以根据压缩包里的原理图加以理解代码。做项目时候留下来的,项目已交,拿出来与大家交流学习。
2021-09-09 10:21:28 534KB TMC260系列
1
正点原子&正点原子哥 《FreeRTOS源码与应用》 STM32F407 FreeRTOS例程源码
2021-09-08 09:00:01 28.78MB STM32 FreeRTOS STM32F407 FreeRTOS源码
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;