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

网站备案图标代码php做网站主题

网站备案图标代码,php做网站主题,桂平网站制作,做网站需要提交因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突 修改点: main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式&…

因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突

修改点:

  • main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式,LCD的输出就无法影响LED引脚的状态)
    在这里插入图片描述
  • LCD_DisplayStringLine();
    在这里插入图片描述
    在这里插入图片描述
  • LCD_Clear()
    在这里插入图片描述

定时器中断

定时器功能

在这里插入图片描述

在这里插入图片描述

定时器频率和周期公式

  • PSC(预分频系数): 1 / f == T, 乘上(PSC+1) 得到执行一次累加操作的实际周期,再乘上(ARR+1)等于中断周期
  • 预分频理解: 假设原本1ms执行一次累加, PSC == 2, 则当前变成2ms才执行一次累加(另外的1ms分给了别的任务)
    在这里插入图片描述
  • 时钟配置
    在这里插入图片描述- 通过STM32CubeMX,配置TIM2(通用定时器)的参数(Fsystem = 80MHz = 80 000 000)
    假设定时中断周期要求 1s , 则 ARR+1=8000 , PSC+1 = 10000
    在这里插入图片描述

使能定时中断

//定时中断需要使能HAL_TIM_Base_Start_IT(&htim2);  //HAL_TIM_Base_Start_IT函数用于以中断模式启动定时器

长按键、短按键(使用TIM3)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
利用cnt计时
在这里插入图片描述
本质就是将计算 T 公式里的: ARR 代替为 CNT(计数值)—— T = 1 / f = CNT * (PSC + 1) / f

LCD高亮显示

//按键4通过循环取余数,控制lcd某行高亮显示
static uint16_t temp_line = 0;
void Hight_light_lcd_line(){key_s4 = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);if(key_s4==RESET && k4_last_state==SET){  //按下B4temp_line++;temp_line%=3;HAL_Delay(200);}//控制功能栏轮流高亮显示if(temp_line==0){//sprintf();   用于写入字符串到字符数组LCD_SetBackColor(Red);  //该行以下的背景颜色是红色sprintf(text, "    Hello, Vodka!     ");LCD_DisplayStringLine(Line3, (uint8_t*) text );LCD_SetBackColor(Black);		//该行以下的背景颜色是黑色sprintf(text, "      Count: %d        ", Count);LCD_DisplayStringLine(Line4, (uint8_t*) text);sprintf(text, "   LightMode: %d        ", lightMode);LCD_DisplayStringLine(Line5, (uint8_t*) text);}else if(temp_line==1){//sprintf();   用于写入字符串到字符数组sprintf(text, "    Hello, Vodka!     ");LCD_DisplayStringLine(Line3, (uint8_t*) text );LCD_SetBackColor(Red);	sprintf(text, "      Count: %d        ", Count);LCD_DisplayStringLine(Line4, (uint8_t*) text);LCD_SetBackColor(Black);	sprintf(text, "   LightMode: %d        ", lightMode);LCD_DisplayStringLine(Line5, (uint8_t*) text);	}else if(temp_line==2){//sprintf();   用于写入字符串到字符数组sprintf(text, "    Hello, Vodka!     ");LCD_DisplayStringLine(Line3, (uint8_t*) text );sprintf(text, "      Count: %d        ", Count);LCD_DisplayStringLine(Line4, (uint8_t*) text);LCD_SetBackColor(Red);	sprintf(text, "   LightMode: %d        ", lightMode);LCD_DisplayStringLine(Line5, (uint8_t*) text);LCD_SetBackColor(Black);	}//LED闪烁,间隔两秒闪烁一次light_led(3,lightMode%2);}

PWM波形

原理

占空比:高电平持续时间占整个周期时长的比值
PWM频率和占空比的概念:占空比由捕获比较寄存器(CCR)决定,而频率由ARR和PSC共同决定。不同的PSC和ARR组合可以得到相同的频率,只要它们的乘积相同。例如,PSC=1和ARR=1000,与PSC=2和ARR=500,得到的频率是一样的,但占空比的调节范围可能不同,因为ARR的值不同。
在这里插入图片描述

CubeMX配置

在这里插入图片描述

初始化

在这里插入图片描述

CCR(输出比较寄存器)

在这里插入图片描述

输入捕获测量引脚输出PWM波形

通过计算两个中断之间CNT差值(capture_value),得出中断周期(捕获周期)
在这里插入图片描述

捕获周期计算公式

在这里插入图片描述

信号发生器

PWM输出引脚和输入捕获引脚,板子上的引脚R37~R40分别是:电压采集1、电压采集2、频率输出1(PB4)、频率输出2(PA15)

例题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

TIM17配置(记得配置NVIC)

在这里插入图片描述

pwm输入捕获代码

PA1、PA7需要杜邦线连接; PA1配置TIM2的通道2、PA7配置TIM17的通道1
在这里插入图片描述

输入捕获555定时器的频率

时钟通道配置

引脚PA15和引脚PB4测量频率输入1和频率输入2
在这里插入图片描述
在这里插入图片描述

代码

TIM2、TIM16输入捕获中断开启
在这里插入图片描述
TIM2、TIM16输入捕获展示
在这里插入图片描述

ADC测量

配置ADC1和ADC2

在这里插入图片描述

代码实现

在这里插入图片描述

在这里插入图片描述

USART通信(异步、全双工、字节传输)

配置

在这里插入图片描述

类型转换问题

字符类型(char)在算术运算中会被转换为整数类型(int)。
short型会被转换为int型。
float型会被转换为double型以提高精度。
当有符号数与无符号数进行运算时,所有操作数自动转换为无符号类型

字符与字节

存储字符串 "bens in 2023/23/23" 的 char 数组需占用 19 字节,空格也算字符,包含'\0'作为终止符(转义字符\n,\t也算字符)

代码实现(向上位机发送数据)

void UART_Tx_Test(void){sprintf((char*)uart_tx_text,"Hey~ Vodka~\r\n");	HAL_UART_Transmit(&huart1, (uint8_t *)uart_tx_text, strlen(uart_tx_text), 50);  //超时时间限制为50msHAL_Delay(2000); //发送数据间隔时间: 0.1s	}

代码实现(按字节循环接收uart串口数据)

主函数
在这里插入图片描述

//util.h
#ifndef __util_h
#define __util_h
//串口接收变量
extern char uart_rx_text[22];
extern uint8_t Rx_Byte;
extern uint8_t Rx_Index;
extern uint8_t Rx_DoneFlag;//车辆信息(串口接收)
extern char car_type[5];
extern char car_data[5];
extern char car_time[13];//测试函数                                      
void lcd_test(void);                            //ADC测量                                       
void ADC_show(void);                            //ADC测量电压
void ADC_Caculate_Volt(void);//串口发送测试
void UART_Tx_Test(void);//串口接收测试(只能通过中断接收)
void UART_Rx_Test(void);//UART中断数据后续处理(放在主程序里循环)
void uart_data_process(void);#endif//util.c
//UART中断回调接收数据(第一次中断在主函数)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef * huart){if(huart->Instance == USART1){uart_rx_text[Rx_Index++] = Rx_Byte;//判断接收的字节是否完成if(Rx_Index==22||Rx_Byte=='\n'){Rx_DoneFlag = 1;}//继续开启下一次中断HAL_UART_Receive_IT(&huart1,&Rx_Byte,sizeof(Rx_Byte));}
}//UART中断数据后续处理(放在主程序里循环)
void uart_data_process(void){//判断中断接收完毕标志if(Rx_DoneFlag==1){if(Rx_Index <= 22){   //接收数组长度22字节,除去\0,实际只能存储21个字节sscanf(uart_rx_text, "%4s %4s %10s", car_type, car_data, car_time);//展示数据LCD_SetBackColor(Yellow);LCD_SetTextColor(Black);		sprintf(rx_display_text,"        UART_Rx           ");LCD_DisplayStringLine(Line0,rx_display_text);		  sprintf(rx_display_text,"    car_type:%s       ",car_type);LCD_DisplayStringLine(Line1,rx_display_text);sprintf(rx_display_text,"    car_data:%s         ",car_data);LCD_DisplayStringLine(Line2,rx_display_text);sprintf(rx_display_text," car_time:%s        ",car_time);LCD_DisplayStringLine(Line3,rx_display_text);		  }else{sprintf(rx_display_text,"        Rx_Error\r\n          ");HAL_UART_Transmit(&huart1, (uint8_t*)rx_display_text, strlen(rx_display_text), 50); }//重置相应标志Rx_DoneFlag = 0;Rx_Index = 0;memset(uart_rx_text,0,strlen(uart_rx_text));}
}

通过定时器,UART串口接收不定长的数据

原理

传送一个字节花费的时间,转化为CNT的值来判断
在这里插入图片描述
间隔指定时间读取一个数据
在这里插入图片描述
判断结束的标志:最后一个位的时间大于1.5ms
在这里插入图片描述

配置

TIM4:内部时钟、波特率:9600、 开启中断、 PSC: 8000-1
在这里插入图片描述

串口中断开启、时钟使能

在这里插入图片描述

中断处理、中断回调

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

自行编写

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IIC

IIC原理图

在这里插入图片描述

非易失性存储器

在这里插入图片描述

从机地址

读写位:1是读、2是写
在这里插入图片描述

代码实现

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

RTC实时时钟

设置(读取)时间、日期,设置闹钟

RTC配置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码实现

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/wzjs/804409.html

相关文章:

  • 怎么上线网站wordpress主题4mudi
  • 网站备案信息如何注销吗杭州网站建设朗诵面朝
  • 课程建设网站设计源码wordpress怎么下载安装
  • 重庆大足网站制作公司影响网站权重
  • 全国做网站的深圳seo搜索优化
  • 钓鱼网站如何做桂林网络科技
  • 中山皇冠建设开发有限公司网站怎么创建wordpress站点
  • 做网站要找什么公司网站没有被搜索引擎收录
  • 24小时24元网站建设网站开发的成品
  • 查企业企业网站有哪些基于.NET的电子商务网站开发
  • 外链推广网站app网站开发协议
  • 公司内部网站一般都怎么维护定制设计的网站
  • 手机浏览器 网站开发巴中市文旅新区关坝片区安置房建设项目
  • 威海网站制作服务官方网站建设最重要的是
  • 网站服务器的搭建帝国cms和wordpress
  • 做雕塑网站找哪家好韩国家具网站模板
  • 基于html5开发的网站开发做网站的价格是多少
  • 建设网站意义深圳网站建设响应式
  • 企业网站怎么扣费的asp.net 网站开发项目
  • 公司做公司网站广告全屋整装家装
  • 做期货财经网站需要哪些资质公司网站做推广
  • 网站搬家网络监控系统
  • 衡水专业做wap网站wordpress插件写在模板里
  • 港海建设网站苏州seo网站管理
  • 沈阳之道网站建设门户网站建设采购
  • 网站域名建设费进什么科目网站如何做品牌宣传海报
  • 哪个网站做海报比较好个人网页制作成品代码五个页面
  • 海珠电子商务网站建设大学生网页设计心得体会
  • 购物网站大全zac博客seo
  • 北京网站设计公司哪个好做装修效果图的网站有哪些