当前位置: 首页 > news >正文

专题页网站小型企业网站建设公司

专题页网站,小型企业网站建设公司,天猫网站做的比京东好,响应式 官网网站目录 简介#xff1a; 学习资料#xff1a; 跳转目录#xff1a; 一、工程创建 二、板载LED 三、用户按键 四、蜂鸣器 1.完整IO控制代码 五、TFT彩屏驱动 六、ADC多通道 1.通道确认 2.CubeMX配置 ①开启对应的ADC通道 ②选择规则组通道 ③开启DMA ④开启ADC…目录 简介 学习资料 跳转目录 一、工程创建 二、板载LED 三、用户按键 四、蜂鸣器 1.完整IO控制代码 五、TFT彩屏驱动 六、ADC多通道 1.通道确认 2.CubeMX配置 ①开启对应的ADC通道 ②选择规则组通道  ③开启DMA ④开启ADC中断 3.KEIL配置 ①内部温度传感器 ②NTC热敏电阻 查表法计算NTC温度 公式法计算NTC温度 实际效果 ③INA240A2电流传感器  4.完整ADC代码 ①BSP_ADC.c ②BSP_ADC.h 七、SPI_NOR FLASH 八、SDIO_SD卡  九、I2C_AS5600编码器 1.Cube MX配置 2.KEIL配置 ①AS5600.c ②AS5600.h 3.演示效果 简介 本系列使用硬件 1.核心板【立创·天空星STM32F407VxT6】开发板 2.控制板STM32天空星_无刷电机拓展板 3.电机1806无刷云台电机 学习资料 立创天空星STM32开发板资料 DENGFOC文档 LVGL官网 百问网-LVGL中文开发手册 跳转目录 【CubeMX-HAL库】STM32F407—无刷电机学习笔记 【CubeMX-HAL库】STM32F407—无刷电机基础知识 【CubeMX-HAL库】STM32F407—无刷电机开环控制 【CubeMX-HAL库】STM32F407—无刷电机闭环控制 【CubeMX-HAL库】STM32F407—无刷电机电流闭环控制 【CubeMX-HAL库】STM32F407—无刷电机SVPWM控制 【CubeMX-HAL库】软件、硬件SPIDMA驱动TFT彩屏(LVGL) 后续继续补充...... 其他笔记跳转链接【CubeMX-HAL库】STM32H743—学习笔记 一、工程创建 本实验通过Cube MX配置使用Keil5编写程序代码。 ①打开Cube MX创建新工程在搜索框输入STM32F407ZET6选择对应芯片。 ②在系统核心配置中选择RCC-打开外部时钟源HSE和LSE。 ③在DEBUG栏中使能SW引脚。 ④将时钟频率设置为168MHz。 ⑤设置文件路径及工程名配置生成Keil-MDK文件。 ⑥ 选择复制必要的文件并且’.c/.h‘独立分开后点击GENERATE CODE生成代码。 ⑦打开生成的Keil工程可以先将编码设置为UTF-8格式(LVGL中字库大部分为UTF-8编码防止之后乱码),进入魔术棒勾选使用LIB库选择对应的下载器并勾复位并运行然后编译工程顺便将部件框都拖到习惯的位置编译成功后即可下载程序。 二、板载LED 通过原理图可知核心板上LED接在PB2引脚高电平点亮。 #define LED_OFF HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET) #define LED_ON HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET) #define LED HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin) #define LED_TOG HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin) 三、用户按键 由原理图可知按键为PA0拨动开关引脚分别为PD8,PD9,PD14。 CubeMX设置对应IO并配置相应上拉下拉。 #define KEY_R HAL_GPIO_ReadPin(KEY_R_GPIO_Port,KEY_R_Pin) #define KEY_D HAL_GPIO_ReadPin(KEY_D_GPIO_Port,KEY_D_Pin) #define KEY_L HAL_GPIO_ReadPin(KEY_L_GPIO_Port,KEY_L_Pin) #define KEY_UP HAL_GPIO_ReadPin(KEY_WKUP_GPIO_Port,KEY_WKUP_Pin)uint8_t key_scan(uint8_t mode) {static uint8_t key 1;if(mode)key 1;if(key 1 (KEY_R 0 || KEY_D 0 || KEY_L 0 || KEY_UP 1)){key 0;HAL_Delay(2);if(KEY_R 0) return 1;else if(KEY_D 0) return 2;else if(KEY_L 0) return 3;else if(KEY_UP 1) return 4;}else if(KEY_R 1 KEY_D 1 KEY_L 1 KEY_UP 0)key 1;return 0; } 四、蜂鸣器 由原理图可知无源蜂鸣器在PB1刚好在ITM3_CH4通道可使用PWM驱动。 CubeMX配置TIM3的CH4通道使用2KHz频率驱动蜂鸣器。  #define BEEP_Init HAL_TIM_PWM_Start_IT(htim3,TIM_CHANNEL_4)//2KHz NO Source BEEP #define BEEP_ON TIM3-CCR4 50 #define BEEP_OFF TIM3-CCR4 100 1.完整IO控制代码 #ifndef __key_H__ #define __key_H__#include main.h#define BEEP_Init HAL_TIM_PWM_Start_IT(htim3,TIM_CHANNEL_4)//2KHz NO Source BEEP #define BEEP_ON TIM3-CCR4 50 #define BEEP_OFF TIM3-CCR4 100#define LED_OFF HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET) #define LED_ON HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET) #define LED HAL_GPIO_ReadPin(LED_GPIO_Port,LED_Pin) #define LED_TOG HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin)#define KEY_R HAL_GPIO_ReadPin(KEY_R_GPIO_Port,KEY_R_Pin) #define KEY_D HAL_GPIO_ReadPin(KEY_D_GPIO_Port,KEY_D_Pin) #define KEY_L HAL_GPIO_ReadPin(KEY_L_GPIO_Port,KEY_L_Pin) #define KEY_UP HAL_GPIO_ReadPin(KEY_WKUP_GPIO_Port,KEY_WKUP_Pin)uint8_t key_scan(uint8_t mode) {static uint8_t key 1;if(mode)key 1;if(key 1 (KEY_R 0 || KEY_D 0 || KEY_L 0 || KEY_UP 1)){key 0;HAL_Delay(2);if(KEY_R 0) return 1;else if(KEY_D 0) return 2;else if(KEY_L 0) return 3;else if(KEY_UP 1) return 4;}else if(KEY_R 1 KEY_D 1 KEY_L 1 KEY_UP 0)key 1;return 0; }#endif五、TFT彩屏驱动 屏幕使用SPIDMA驱动背光引脚暂未使用调光设置没开启PWM。 详细代码介绍可转【CubeMX-HAL库】软件、硬件SPIDMA驱动TFT彩屏(LVGL) 六、ADC多通道 1.通道确认 由原理图可知我们本次需要采集的ADC主要有两个三项电流部分、NTC控制板温度、芯片内部温度。 2.CubeMX配置 ①开启对应的ADC通道 ②选择规则组通道  ③开启DMA ④开启ADC中断 可进行DMA采集一定次数之后在中断中进行滤波。 3.KEIL配置 ①内部温度传感器 #define Vsense 0.76f //温度传感器在25℃时的电压值 #define Avg_Slope 0.0025f //温度与Vsense曲线的平均斜率 float ADC_Get_MCU_Temperature(void)//获取内部温度传感器温度 {float adc_vol,temp;adc_vol ADC_T * 3.3f / 4096;temp (adc_vol - Vsense) / Avg_Slope 25;return temp; } ②NTC热敏电阻 本次NTC使用10K ±1%精度的电阻 由原理图中的NTC电路推算采集的电压值然后在反推当前NTC的阻值。(下面3.3V改为5V) 当10K在下NTC在上时计算如下  查表法计算NTC温度 #define data0 28017 #define data1 26826 #define data2 25697 #define data3 24629 #define data4 23618 #define data5 22660 #define data6 21752 #define data7 20892 #define data8 20075 #define data9 19299 #define data10 18560 #define data11 18482 #define data12 18149 #define data13 17632 #define data14 16992 #define data15 16280 #define data16 15535 #define data17 14787 #define data18 14055 #define data19 13354 #define data20 12690 #define data21 12068 #define data22 11490 #define data23 10954 #define data24 10458 #define data25 10000 #define data26 9576 #define data27 9184 #define data28 8819 #define data29 8478 #define data30 8160 #define data31 7861 #define data32 7579 #define data33 7311 #define data34 7056 #define data35 6813 #define data36 6581 #define data37 6357 #define data38 6142 #define data39 5934 #define data40 5734 #define data41 5541 #define data42 5353 #define data43 5173 #define data44 4998 #define data45 4829 #define data46 4665 #define data47 4507 #define data48 4355 #define data49 4208 #define data50 4065 #define data51 3927 #define data52 3794 #define data53 3664 #define data54 3538 #define data55 3415 #define data56 3294 #define data57 3175 #define data58 3058 #define data59 2941 #define data60 2825 #define data61 2776 #define data62 2718 #define data63 2652 #define data64 2582 #define data65 2508 #define data66 2432 #define data67 2356 #define data68 2280 #define data69 2207 #define data70 2135 #define data71 2066 #define data72 2000 #define data73 1938 #define data74 1879 #define data75 1823 #define data76 1770 #define data77 1720 #define data78 1673 #define data79 1628 #define data80 1586 #define data81 1546 #define data82 1508 #define data83 1471 #define data84 1435 #define data85 1401 #define data86 1367 #define data87 1334 #define data88 1301 #define data89 1268 #define data90 1236 #define data91 1204 #define data92 1171 #define data93 1139 #define data94 1107 #define data95 1074 #define data96 1042 #define data97 1010const uint16_t NTC_Table[98]{data0,data1,data2,data3,data4,data5,data6,data7,data8,data9,data10,data11,data12,data13,data14,data15,data16,data17,data18,data19,data20,data21,data22,data23,data24,data25,data26,data27,data28,data29,data30,data31,data32,data33,data34,data35,data36,data37,data38,data39,data40,data41,data42,data43,data44,data45,data46,data47,data48,data49,data50,data51,data52,data53,data54,data55,data56,data57,data58,data59,data60,data61,data62,data63,data64,data65,data66,data67,data68,data69,data70,data71,data72,data73,data74,data75,data76,data77,data78,data79,data80,data81,data82,data83,data84,data85,data86,data87,data88,data89,data90,data91,data92,data93,data94,data95,data96,data97, };uint16_t NTC_Get_Temp_Array(void)//NTC温度查表计算(放大了10倍) { float t;unsigned int dat,max,min,mid,da,j;tADC_NTC;tt/4096;tt*3300;//计算mV电压tt/(5-t/1000); datt*10;dadat;max97;min0;while(1) {mid(maxmin)/2;if(NTC_Table[mid]da)maxmid;elseminmid;if((max-min)1)break;}if(maxmin)damin*10;else {j(NTC_Table[min]-NTC_Table[max])/10;j(NTC_Table[min]-da)/j;daj;da10*minda; //采集的温度放大了10倍}return da; } 公式法计算NTC温度 #include math.h /*Rt Rp *exp(B*(1/T1-1/T2))Rt 是热敏电阻在T1温度下的阻值Rp是热敏电阻在T2常温下的标称阻值exp是e的n次方e是自然常数就是自然对数的底数近似等于2.7182818B值是热敏电阻的重要参数教程中用到的热敏电阻B值为3380这里T1和T2指的是开尔文温度T2是常温25℃即(273.1525)KT1就是所求的温度 */ #define Rp 10000.0f/* 10K */ #define T2 (273.15f 25.0f)/* T2 */ #define Bx 3380.0f/* B */ #define Ka 273.15f/*** brief 计算温度值* note 计算温度分为两步1.根据ADC采集到的值计算当前对应的Rt2.根据Rt计算对应的温度值* param para: 温度采集对应ADC通道的值已滤波* retval 温度值*/ float NTC_Get_Temp_Count(uint16_t ADC_VALUE)//计算温度值 {float Rt;float temp;/*NTC在上,分压电阻在下时Rt 5.0 * 10000 / VTEMP - 10000,其中VTEMP就是温度检测通道采集回来的电压值,VTEMP ADC值* 3.3/4096由此我们可以计算出当前Rt的值Rt 5.0f * 10000.0f / (para * 3.3f / 4096.0f ) - 10000.0f; NTC在下,分压电阻在上时:Rt (10k * VTEMP) / (3.3 - VTEMP)Rt 10000.0f * (para * 3.3f / 4096.0f) / (5.0f - (para * 3.3f / 4096.0f));*/ Rt 10000.0f * (ADC_VALUE * 3.3f / 4096.0f) / (5.0f - (ADC_VALUE * 3.3f / 4096.0f));/*根据当前ADC值计算出Rt的值*//*根据当前Rt的值来计算对应温度值Rt Rp *exp(B*(1/T1-1/T2))*/temp Rt / Rp;/* 解出exp(B*(1/T1-1/T2)) 即temp exp(B*(1/T1-1/T2)) */temp log(temp);/* 解出B*(1/T1-1/T2) 即temp B*(1/T1-1/T2) */temp / Bx;/* 解出1/T1-1/T2 即temp 1/T1-1/T2 */temp (1.0f / T2);/* 解出1/T1 即temp 1/T1 */temp 1.0f / (temp);/* 解出T1 即temp T1 */temp - Ka;/* 计算T1对应的摄氏度 */return temp;/* 返回温度值 */ }实际效果 ③INA240A2电流传感器  4.完整ADC代码 ①BSP_ADC.c ②BSP_ADC.h 七、SPI_NOR FLASH 八、SDIO_SD卡  九、I2C_AS5600编码器 1.Cube MX配置 快速模式  2.KEIL配置 ①AS5600.c #include AS5600.huint16_t AS5600_1_ReadRaw(void)//获取原始角度寄存器 {uint8_t data[2]{AS5600_RAW_ANGLE_H,0x00};HAL_I2C_Master_Transmit(hi2c1,AS5600_ADDRESS_W,data,1,Time_Out);HAL_I2C_Master_Receive(hi2c1,AS5600_ADDRESS_R,data,2,Time_Out); // I2C_Start(); // I2C_SendByte(AS5600_ADDRESS_W); // I2C_RecviveAck(); // I2C_SendByte(AS5600_RAW_ANGLE_H); // I2C_RecviveAck(); // // I2C_Start(); // I2C_SendByte(AS5600_ADDRESS_R); // I2C_RecviveAck(); // Data_H I2C_RecviveData(); // I2C_RecviveAck(); // // I2C_Start(); // I2C_SendByte(AS5600_ADDRESS_R); // I2C_RecviveAck(); // Data_L I2C_RecviveData(); // I2C_SendAck(1); // I2C_Stop();return (data[0] 8) | data[1]; }float AS5600_1_GetAngle_0_2PI(void)//读取角度(0-2PI) {float Angle 0.0;Angle AS5600_1_ReadRaw() * _2PI / 4096; // Angle (Angle/4096) * 360;return Angle; }float AS5600_1_Full_Angle 0.0; float AS5600_1_Last_Angle 0.0; float AS5600_1_GetAngle_Cycles(void)//读取圈数 {float Now_Angle 0.0;float Angle AS5600_1_GetAngle_0_2PI();Now_Angle Angle - AS5600_1_Last_Angle;if(fabs(Now_Angle) (0.8f*2*PI)){AS5600_1_Full_Angle AS5600_1_Full_Angle ((Now_Angle 0) ? -1 :1);}AS5600_1_Last_Angle Angle;return (AS5600_1_Full_Angle * 2 * PI AS5600_1_Last_Angle); }uint16_t AS5600_2_ReadRaw(void)//获取原始角度寄存器 {uint8_t data[2]{AS5600_RAW_ANGLE_H,0x00};HAL_I2C_Master_Transmit(hi2c2,AS5600_ADDRESS_W,data,1,Time_Out);HAL_I2C_Master_Receive(hi2c2,AS5600_ADDRESS_R,data,2,Time_Out);return (data[0] 8) | data[1]; }float AS5600_2_GetAngle_0_2PI(void)//读取角度(0-2PI) {float Angle 0.0;Angle AS5600_2_ReadRaw() * _2PI / 4096;return Angle; }float AS5600_2_Full_Angle 0.0; float AS5600_2_Last_Angle 0.0; float AS5600_2_GetAngle_Cycles(void)//读取圈数 {float Now_Angle 0.0;float Angle AS5600_2_GetAngle_0_2PI();Now_Angle Angle - AS5600_2_Last_Angle;if(fabs(Now_Angle) (0.8f*2*PI)){AS5600_2_Full_Angle AS5600_2_Full_Angle ((Now_Angle 0) ? -1 :1);}AS5600_2_Last_Angle Angle;return (AS5600_2_Full_Angle * 2 * PI AS5600_2_Last_Angle); }float Last_Vel_ts 0.0; float Vel_Last_Angle 0.0; float AS5600_2_GetVelocity(void) {float dt 0.0;float Vel_ts SysTick - VAL;if(Vel_ts Last_Vel_ts) dt (Last_Vel_ts - Vel_ts)/9*1e-6f;else dt (0xFFFFFF - Vel_ts Last_Vel_ts)/9*1e-6f;if(dt 0.0001f) dt 10000;float Vel_Angle AS5600_2_GetAngle_Cycles();float dv Vel_Angle - Vel_Last_Angle;float velocity (Vel_Angle - Vel_Last_Angle)/dt;Last_Vel_ts Vel_ts;Vel_Last_Angle Vel_Angle;return velocity; }②AS5600.h #ifndef __AS5600_H #define __AS5600_H#include main.h #include stdio.h #include math.h #include i2c.h#define Time_Out 100//超时时间#define AS5600_ADDRESS_W 0X6C//加上读写位(1位1/0) #define AS5600_ADDRESS_R 0X6D #define AS5600_RAW_ANGLE_H 0X0C//原始角度寄存器[11:8]共12位分辨率 #define AS5600_RAW_ANGLE_L 0X0D//原始角度寄存器[7:0]#define PI 3.14159265359f #define _2PI 6.28318530718fuint16_t AS5600_1_ReadRaw(void);//获取原始角度寄存器 float AS5600_1_GetAngle_0_2PI(void);//读取角度(0-2PI) float AS5600_1_GetAngle_Cycles(void);//读取圈数uint16_t AS5600_2_ReadRaw(void);//获取原始角度寄存器 float AS5600_2_GetAngle_0_2PI(void);//读取角度(0-2PI) float AS5600_2_GetAngle_Cycles(void);//读取圈数 float AS5600_2_GetVelocity(void);#endif3.演示效果
http://www.hkea.cn/news/14404466/

相关文章:

  • 站建设培训学校全国学校信息查询官网
  • wordpress 多站点 主站点成品人和精品人的区别在哪约
  • 建立自己的网站怎么样做WordPress网站动漫你在
  • 自己做网站 需要服务器吗江苏太仓建设局网站
  • 网域高科学校网站管理系统漏洞外贸业务员怎么开发客户
  • 网站安全检测发生告警后苏州seo专家教优化网站结构
  • 企业搭建pc端网站长兴县城乡建设局网站
  • iis 网站 端口网站伪静态好还是静态好
  • ps做设计想接私活在什么网站如何搭建网上商城
  • 南京快速建设企业网站分布式加载网站的静态
  • 西安做网站的公司地址网站什么意思
  • 网站后台怎么建设河南建设银行处理违章网站
  • 帝国cms建站实例教程企业网站建设费用计入什么科目
  • 网站中文章内图片做超链接梧州论坛红豆社区
  • 购物网站界面 管理员需求分析建筑工程招投标网
  • 做动态表情包的网站传媒网站建设方案
  • 网站推广计划书具体包含哪些基本内容?长春iso认证公司
  • 国家有规定必须做可信网站验证外贸行业建站
  • 厦门协会网站建设百度关键词竞价排名
  • 自己做网站是否要买云主机网站网页设计多少钱
  • 前端和做网站惠州的企业网站建设
  • 设计公司网站图运营推广网站建设
  • 金融企业网站建设公司城乡建设部官方网站
  • ps做网站尺寸多少像素wordpress投票类主题
  • 福州网站关键排名软文推广有哪些平台
  • FPGA毕业设计代做网站软件开发主要工作内容
  • 亚马逊没有网站怎么做seo新乡微网站建设
  • 做一个网站系统多少钱国内代理ip免费
  • 360做网站荆州如何将aaa云主机做网站
  • 论文网站建设的参考文献做网站首先要干什么