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

公司网站怎么做啊怎么增加网站反链

公司网站怎么做啊,怎么增加网站反链,seo推广怎么弄,入侵网站怎么做弹出温馨提示#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程#xff0c;我打算先自己做一遍#xff0c;把遇到的问题和不同之处记录到演练篇#xff0c;然后再返回来仔细研究一下#xff0c;找到最佳的解题方法记录到研究篇。题目在#xff1a…温馨提示 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程我打算先自己做一遍把遇到的问题和不同之处记录到演练篇然后再返回来仔细研究一下找到最佳的解题方法记录到研究篇。题目在https://pan.quark.cn/s/fc121e80dbff 本文可能不会重复之前提到的内容如需查看请参考附录 【蓝桥杯嵌入式】附录 目录 演练时发现的问题 题目分析与计划 设计规范  浏览题目 详细阅读与分析 整体流程设计和对应代码 一、外设配置与代码框分析 二、软件配置 按照分析配置外设 USART1 TIM 三、保存结果 演练时发现的问题 LED的闪烁问题之前没有注意到不可以使用Toggle函数因为LCD会对引脚的状态产生影响。应该使用标志变量或利用奇偶数来实现状态切换。不知道为什么我的开发板上一打开TIM就会产生一次超时中断解决方法是设置一个计数变量为0只要调用中断服务函数就自增1当计数为2时再实现计划的功能。在LED驱动函数中包含关闭所有LED灯的只需要在进入while前关闭一次LED不用每次都关闭LED了。重要题目要求按键响应小于100ms那我们就设置为90ms。有时需要在中断中清屏但是中断的位置不确定所以要设置一个全局标志在中断改变标志然后在需要清屏的地方判断标志位来清屏。串口接收信号后要延时50ms。 题目分析与计划 设计规范  我自己设计的时候没有章法从而设计的有点潦草浪费了很多时间。设计的时候要冷静、全面、要遵守一个确定的顺序。 现在我要确定一个章法这是第一版以后更新的版本请在附录中查看。 浏览一遍题目有一个整体印象。仔细读题目综合考虑如何配置外设和实现功能。 确定需要的外设和功能。约定圆形为外设分析、三角型为功能分析图形中的数字来区分不同的模块。设计流程主循环前做什么、主循环中做什么。 确定主循环前打开需要的外设根据题目一步一步的设计流程不要遗漏字不要写的太大而且要留有足够的空间用来修改。 流程包括一条主线任务调用函数就是支线任务。同时在另一张草稿纸上写下需要的变量按照外设或题目中的信息命名要有特征性和区分度。这样设计下来最多1小时按照设计配置外设和写程序最多2小时检查和优化1小时最多4个小时就完成了。 全局变量定义 经验规则 标志变量uint8_t 只取个位数或01 与计算有关或者需要显示uint32_t 浮点型float 浏览题目 得到的信息PWM输出、串口、LED2个、KEY4个、LCD2种界面。 详细阅读与分析 硬件要求 ①USART19600需要接收信息 ②PWM输出PA12k或1k占空比可调10%。PCBTimer设置位40MHz周期设置为199频率1k占空值设置为19。 功能要求 、通过串口改密码、密码错误3次以上LD2闪烁。 常用功能 三角形1验证密码 三角形2改变输入的密码 三角形3串口接收后的处理中断服务函数 三角形4密码正确的操作包含在三角形1中 需要的定时器的功能 三角形1密码正确后TIM6 三角形1密码3次以上错误后TIM7 整体流程设计和对应代码 提示自己写设计流程草稿的时候要按照自己的习惯简写我这里是为了方便描述才写这么多的。 这里密码只用于确定是否正确而且位数确定所以密码直接用字符类型的数组来存储密码更方便。软件方式启动PA1进行PWM输出的定时器和通道DMA方式启动串口接收。主循环中轮询检测按键、LED状态标志当LCD_show0时为PSD模式 按下按键对应的密码值B[x]就加一按下B4→三角形1验证密码 支线三角形1验证密码 尝试次数 tryTime 加一若密码正确LED_show1清屏tryTime清零PWM周期设置为99占空值设置为19 LD1_f标志置1打开TIM6。 //验证密码 void KEY_Try() {if(KEY[0]B[0]KEY[1]B[1]KEY[2]B[2]){LCD_show1;LCD_Clear(Black);LD1_f1;tryTime0;__HAL_TIM_SET_COUNTER(htim2,99);__HAL_TIM_SET_COMPARE(htim2,TIM_CHANNEL_2,19);HAL_TIM_Base_Start_IT(htim6);}else{tryTime;B[0],B[1],B[2];if(tryTime3){LD2_f1;HAL_TIM_Base_Start_IT(htim7);}} }TIM65s后第二次调用服务函数时LED_show0PWM周期变设置为199 LD1_f标志置0清屏标志clear_f置1关闭TIM6。当LCD_show1时为STA模式 显示频率和周期题目中没有读取操作设置周期后频率确定这里频率是定值2000占空比可以用“读取占空比1/2”计算其实也是定值这里象征性的计算一下。其他支线 支线三角形2密码值变化输入一个char*变量改变值如果是‘’或‘9’就变为‘0’。 //密码值改变 void KEY_Change(char* Bx) {if(*Bx||*Bx9)*Bx0;else*Bx*Bx1; } 支线三角形3串口接收后的处理中断服务函数如果指令的前三位是密码那就把密码改为指令的4~6为新密码 void DMA1_Channel1_IRQHandler(void) {/* USER CODE BEGIN DMA1_Channel1_IRQn 0 *//* USER CODE END DMA1_Channel1_IRQn 0 */HAL_DMA_IRQHandler(hdma_usart1_rx);/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */HAL_Delay(50);if(KEY[0]rxBuf[0]KEY[1]rxBuf[1]KEY[2]rxBuf[2]){KEY[0]rxBuf[4];KEY[1]rxBuf[5];KEY[2]rxBuf[6];}/* USER CODE END DMA1_Channel1_IRQn 1 */ } 主循环函数部分 /* USER CODE BEGIN WHILE */HAL_TIM_Base_Start(htim2);HAL_TIM_PWM_Start(htim2,TIM_CHANNEL_2);HAL_UART_Receive_DMA(huart1,(uint8_t*)rxBuf,sizeof(rxBuf));LED_swicth(LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin|LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin,GPIO_PIN_SET);while (1){keyScan();LED_State();if(LCD_show0){if(clear_f1){LCD_Clear(Black);clear_f0;}LCD_DisplayStringLine(Line2,(uint8_t*) PSD);sprintf(LCD_str, B1:%c,B[0]);LCD_DisplayStringLine(Line4,(uint8_t*)LCD_str);sprintf(LCD_str, B2:%c,B[1]);LCD_DisplayStringLine(Line5,(uint8_t*)LCD_str);sprintf(LCD_str, B3:%c,B[2]);LCD_DisplayStringLine(Line6,(uint8_t*)LCD_str);}else if(LCD_show1){LCD_DisplayStringLine(Line2,(uint8_t*) STA);sprintf(LCD_str, F:%dHz,STA_F);LCD_DisplayStringLine(Line4,(uint8_t*)LCD_str);STA_D__HAL_TIM_GET_COMPARE(htim2,TIM_CHANNEL_2)1/2;sprintf(LCD_str, D:%d%c,STA_D,%);LCD_DisplayStringLine(Line5,(uint8_t*)LCD_str);}/* USER CODE END WHILE */ 按键响应 //按键响应 void B1_fun() {if(LCD_show!0)return;KEY_Change(B[0]); }void B2_fun() {if(LCD_show!0)return;KEY_Change(B[1]); }void B3_fun() {if(LCD_show!0)return;KEY_Change(B[2]); }void B4_fun() {if(LCD_show!0)return;KEY_Try(); } 中断函数  void DMA1_Channel1_IRQHandler(void) {HAL_DMA_IRQHandler(hdma_usart1_rx);HAL_Delay(50);if(KEY[0]rxBuf[0]KEY[1]rxBuf[1]KEY[2]rxBuf[2]){KEY[0]rxBuf[4];KEY[1]rxBuf[5];KEY[2]rxBuf[6];} }void TIM6_DAC_IRQHandler(void) {HAL_TIM_IRQHandler(htim6);tim6;if(tim62){clear_f1;tim60;LCD_show0;LD1_f0;__HAL_TIM_SET_COUNTER(htim2,199);LED_swicth(LED1_Pin,GPIO_PIN_SET);B[0],B[1],B[2];HAL_TIM_Base_Stop_IT(htim6);} }void TIM7_IRQHandler(void) {HAL_TIM_IRQHandler(htim7);LD2_tim;if(LD2_tim50){LD2_tim0;HAL_TIM_Base_Stop_IT(htim7);}else {if(LD2_tim%20)LED_swicth(LED2_Pin,GPIO_PIN_RESET);elseLED_swicth(LED2_Pin,GPIO_PIN_SET);} } 一、外设配置与代码框分析 LED锁存器操作包装函数直接在main.c实现 //LED控制 void LED_swicth(uint16_t GPIO_pin,GPIO_PinState PinState) {HAL_GPIO_WritePin(LED_LE_GPIO_Port,LED_LE_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin|LED5_Pin|LED6_Pin|LED7_Pin|LED8_Pin,GPIO_PIN_SET);HAL_GPIO_WritePin(LED1_GPIO_Port,GPIO_pin,PinState);HAL_GPIO_WritePin(LED_LE_GPIO_Port,LED_LE_Pin,GPIO_PIN_RESET); } KEY扫描函数、长按操作 按键扫描函数框架所有的按键引发事件的操作都在这里实现 //按键1响应函数 void B1Fun() { }//按键2响应函数 void B2Fun() { }//按键3响应函数 void B3Fun() { }//按键4响应函数 void B4Fun() { }//按键扫描 void KeyScan() {uint32_t keyDelay50;if(HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)GPIO_PIN_RESET){HAL_Delay(keyDelay);if(HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)GPIO_PIN_RESET){B1Fun();}}if(HAL_GPIO_ReadPin(B2_GPIO_Port,B2_Pin)GPIO_PIN_RESET){HAL_Delay(keyDelay);if(HAL_GPIO_ReadPin(B2_GPIO_Port,B2_Pin)GPIO_PIN_RESET){B2Fun();}}if(HAL_GPIO_ReadPin(B3_GPIO_Port,B3_Pin)GPIO_PIN_RESET){HAL_Delay(keyDelay);if(HAL_GPIO_ReadPin(B3_GPIO_Port,B3_Pin)GPIO_PIN_RESET){B3Fun();}}if(HAL_GPIO_ReadPin(B4_GPIO_Port,B4_Pin)GPIO_PIN_RESET){HAL_Delay(keyDelay);if(HAL_GPIO_ReadPin(B4_GPIO_Port,B4_Pin)GPIO_PIN_RESET){B4Fun();}} } 长按操作 按下按键后打开定时器定时器计时2s如果定时器正在运行就轮询检测按键是否松开如果松开就是短按。如果定时器计时完成就关闭定时器等待按键松开就是长按。 //PWM_C初始化为1在定时器超时后PWM_C0判定为长按 if(PWM_C1)//长按 {HAL_TIM_Base_Start_IT(htim6);while(HAL_TIM_Base_GetState(htim6)HAL_TIM_STATE_BUSY)//定时器正在运行{if(HAL_GPIO_ReadPin(B4_GPIO_Port,B4_Pin)GPIO_PIN_SET)//按键提前松开就是短按{HAL_TIM_Base_Stop_IT(htim6);return;}}//如果是长按就等待按键松开if(PWM_C0)while(HAL_GPIO_ReadPin(B4_GPIO_Port,B4_Pin)GPIO_PIN_RESET); } else//短按PWM_C1; LCD各种界面的设计在主循环中实现 PWM输出 通过设置 Prescaler             来设置定时器频率 通过设置 Counter Period   来设置周期计数值通过设置 Pulse                   来设置占空比通过设置 CH Polarity         来设置极性PWM波的频率设置计算公式 预分频系数 APB1 Timer/PWM波的频率 -1 周期 定时器频率/PWM波的频率 预分频系数 APB1 Timer/定时器频率 -1 根据题目确定配置如果要配置%的占空比周期就设置为100的倍数。然后根据题目和便于计算原则设置预分频系数。在程序中修改预分频系数、周期、占空比的函数如下读取函数就是把SET改为GET。 __HAL_TIM_SET_COUNTER() //设置计数值即周期 __HAL_TIM_SET_PRESCALER() //设置预分频系数 __HAL_TIM_SET_COMPARE(设备句柄地址,通道号,脉宽值); //设置占空比 USART1Asynchronous模式、频率设置为9600。 二、软件配置 参考附录的内容建立名为“ ”的项目。 按照分析配置外设 时钟配置 ​ LED KEY PWM输出 USART1 将PA9和PA10用作USART1的引脚。 TIM TIM6: TIM7 生成项目文件后打开MDK 导入LCD驱动程序文件编译。 三、保存结果 打包Core文件中所有文件还有Gxxxxxxxx.hex文件。
http://www.zqtcl.cn/news/352824/

相关文章:

  • 网站搜索排名优化软件flash xml网站
  • 匀贵网站建设亿级别网站开发注意
  • 怎样架设网站网站优化公司推荐
  • iis网站防盗链济宁官方网站
  • 网址查询地址查询站长之家在海南注册公司需要什么条件
  • 网站开发兼职平台网站建设需要多少钱小江网页设计
  • 最专业的网站建设收费2021没封的网站有人分享吗
  • 站酷设计网站官网入口文字设计wordpress是服务器吗
  • 律师手机网站模板天津做推广的公司
  • 西安市高新区建设规划局网站织梦小说网站模板下载地址
  • 网站开发简历 自我评价网页设计报告论文
  • 如何让网站不被收录不备案 国内网站
  • 站长之家域名买天猫店铺去哪里买
  • asp.net做的网站模板下载万网x3 wordpress
  • 设计网站设计目标天津市建设工程管理总队网站
  • 网站开始怎么做上海响应式网页建设
  • 网站备案 seo免费二维码制作网站
  • 删除网站备案网站建设湖南岚鸿建设
  • 做vlogger的网站有哪些长沙网站排名技巧
  • 媒体营销平台商品seo关键词优化
  • 芜湖先锋网站两学一做wordpress菜单顶部
  • 网站策划怎么样一级域名网站如何申请
  • 烟台高端网站开发网站开发哪个公司好
  • 广州网站定制开发方案南宁网站 制作
  • php做网站需要后台吗郑州建网站十大
  • 网站跳出率是什么意思百度服务
  • 建站 discuz开发者导航
  • 有哪些网站可以做毕业设计外贸网站发外链
  • 如何使用网站模板计算机培训班有用吗
  • 本地宁波网站建设电子商务网站建设工具都有那些