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

做类似美团的网站苏州相城区最新楼盘价格

做类似美团的网站,苏州相城区最新楼盘价格,做网站用什么团建,站群网站推广工具费用一、分析 本届的风格又变了一番#xff0c;但是难度也降低了些。 又是考察了 PWM 和 ADC。 第八、九届也考察了 PWM。建议先复习这两届#xff0c;再回来模拟。 LCD的显示也提了额外的要求。 1. 功能概述 电位器 R37 输出的模拟电压信号 PA6输出频率固定#xff0c;占… 一、分析  本届的风格又变了一番但是难度也降低了些。 又是考察了 PWM 和 ADC。 第八、九届也考察了 PWM。建议先复习这两届再回来模拟。 LCD的显示也提了额外的要求。 1. 功能概述 电位器 R37 输出的模拟电压信号 PA6输出频率固定占空比可调节 PA7输出频率固定占空比可调节 完成 B1、B2、B3、B4 按键动作 完成 LCD 显示数据和参数 2. 性能要求 数据显示界面下电压值更新时间 0.1 秒PA6、PA7输出信号占空比跟随相应时间1秒按键相应时间0.1 秒输出频率精度5%输出占空比精度5% 本届把性能要求单独列出来好看多了。 3. 运行模式 这部分是关键和往届考察的PWM不同 1自动模式PA6 和 PA7 输出信号占空比相同 当 R37_Volt 0PA6 和 PA7 持续输出低电平。 当 R37_Volt 3.3PA6 和 PA7 持续输出高电平。 2手动模式PA6、PA7 输出信号占空比通过按键控制与 R37_Volt 无关 这部分的伪代码先把下面的先搞定再来写这里的。 伪代码 PWM_state_manu 0; PWM_state_auto 0; void Running_mode(){if(D_state Data_Disp):if(mode AUTO){if(Key_Down 3){if(PWM_state_auto 0){// 80M/(80*10K)100TIM_AUTORELOAD(htim3, 9999);// 80M/(80*5K) 200TIM_AUTORELOAD(htim17, 4999);TIM_COMPARE(htim3, Channel_1, (unsigned int)(10000*((R37_Volt)/3.3)));TIM_COMPARE(htim17, Channel_1, (unsigned int)(5000*((R37_Volt)/3.3)));PWM_state_auto 1;}else if(PWM_state_auto 1){// 80M/(80*10K)100TIM_AUTORELOAD(htim17, 9999);// 80M/(80*5K) 200TIM_AUTORELOAD(htim3, 4999);TIM_COMPARE(htim17, Channel_1, (unsigned int)(10000*((R37_Volt)/3.3)));TIM_COMPARE(htim3, Channel_1, (unsigned int)(5000*((R37_Volt)/3.3)));PWM_state_auto 0;}}}else if(mode MANU){//切换PA6和PA7的频率if(Key_Down 3){if (PWM_state_manu 0){// 80M/(80*10K)100TIM_AUTORELOAD(htim3, 9999);// 80M/(80*5K) 200TIM_AUTORELOAD(htim17, 4999);//频率改变后占空比也要跟随毕竟跟周期有关TIM_COMPARE(htim3, Channel_1, (100*PA6_Duty));TIM_COMPARE(htim17, Channel_1, (50*PA6_Duty));PWM_state_manu 1;}else if(PWM_state_manu 1){// 80M/(80*10K)100TIM_AUTORELOAD(htim17, 9999);// 80M/(80*5K) 200TIM_AUTORELOAD(htim3, 4999);//频率改变后占空比也要跟随毕竟跟周期有关TIM_COMPARE(htim17, Channel_1, (100*PA6_Duty));TIM_COMPARE(htim3, Channel_1, (50*PA6_Duty));PWM_state_manu 0;}}}} 4. LCD 显示界面 本届直接把像素位置给标出来了严格要求显示的细节。 1数据显示界面 Data电压模式自动或手动 2参数显示界面 ParaPA6占空比PA7占空比 3显示颜色 背景色黑前景色白 伪代码 typedef enum{Data_Disp,Para_Disp } Disp_State;typedef enum{AUTO,MANU } Mode;const char* ModeStrings[] {AUTO,MANU };Disp_State D_state Data_Disp; Mode mode AUTO; float PA6_Duty, PA7_Duty; float R37_Volt; void Led_Proc(){//数据显示界面if(D_state Data_Disp){LCD_display(Data);LCD_display(V:%f,R37_Volt);LCD_display(Mode,ModeStrings[mode]);}else if(D_state Para_Disp){LCD_Clear(Black);LCD_display(Para);LCD_display(PA6:%f%%, PA6_Duty);LCD_display(PA6:%f%%, PA7_Duty);} } 5. 按键功能 1B1界面切换 2B2参数设置下手动模式下PA6占空比加10%数值边界10%-90%需要设置参数循环。 3B3参数设置下手动模式下PA7占空比加10%数值边界10%-90%需要设置参数循环。 4B4切换模式 5B3数据显示下互换PA6和PA7输出频率 伪代码 unsigned int Key_Down; Key_Proc(){//消抖不写了//按键模版不写了switch (Key_Down){case 1:if(D_state Data_Disp){LCD_Clear(Black);D_state Para_Disp;}else if(D_state Para_Disp){LCD_Clear(Black);D_state Data_Disp;}break;case 2:if(D_state Para_Disp){if(mode MANU){if(PA6_Duty 90){PA6_Duty 10;}else if(PA6_Duty 90)PA6_Duty 10;}}break;case 3:if(D_state Para_Disp){if(mode MANU){if(PA7_Duty 90){PA7_Duty 10;}else if(PA7_Duty 90)PA7_Duty 10;}}else if (D_state Data_Disp){//切换频率这块单独写个函数}break;case 4:if(mode AUTO)mode MANU;else mode AUTO;break;} } 6. LED 指示灯 1自动模式LD1亮手动模式LD1灭。 2数据界面LD2亮参数界面LD2灭。 void Led_Proc(){if(mode AUTO){ucled | 0x01;}else if(mode MANU){ucled ~0x01;}if(D_state Data_Disp)ucled | 0x02;else if(D_state Para_Disp)ucled ~0x02; } 7. 初始状态说明 1自动模式 2数据界面 310%占空比 4PA6_f 100HzPA7_f 200Hz 占空比和频率在 CubeMx 调整。 二、CubeMx Key 、LED 和 ADC 就不重复写了重点是 PWM。 PWM 按图中配置的话 那么此时改动 Pulse 100那么Duty 100/9991 10% 当然这些都是初始值除了时钟频率和 PSC保持不变其它都要在代码中改动。 当然 TIM17 和 TIM3 也一样。 三、完整代码编写 1. 全局变量 /* USER CODE BEGIN Includes */ #include lcd.h #include stdio.h /* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ typedef enum{Data_Disp,Para_Disp } Disp_State;typedef enum{AUTO,MANU } MODE;const char* ModeString[] {AUTO,MANU };Disp_State D_state Data_Disp; MODE mode AUTO; /* USER CODE END PTD *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */uint16_t Lcd_Disp_Str[21]; float R37_Volt; uint8_t PA6_Duty10, PA7_Duty10; uint8_t Key_val, Key_up, Key_down, Key_old; uint8_t ucled;uint8_t PWM_state_manu 0; uint8_t PWM_state_auto 0; __IO uint16_t uwTick_Set_Lcd 0; __IO uint16_t uwTick_Set_Key 0; __IO uint16_t uwTick_Set_Led 0; __IO uint16_t uwTick_Set_PWM 0;/* USER CODE END PV */ 2. 主函数 int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_ADC2_Init();MX_TIM3_Init();MX_TIM17_Init();/* USER CODE BEGIN 2 */LCD_Init();LCD_Clear(Black);LCD_SetBackColor(Black);LCD_SetTextColor(White);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */Lcd_Proc();Key_Proc();Led_Proc();Running_mode();/* USER CODE BEGIN 3 */}/* USER CODE END 3 */ } 3. 显示 void Lcd_Proc(){if((uwTick_Set_Lcd - uwTick) 100)return;uwTick uwTick_Set_Lcd;R37_Volt (((float)(Get_ADC2())/4096)*3.3);if(D_state Data_Disp){sprintf((char*) Lcd_Disp_Str, Data);LCD_DisplayStringLine(Line0, Lcd_Disp_Str);sprintf((char*) Lcd_Disp_Str, V:%4.2fV, R37_Volt);LCD_DisplayStringLine(Line2, Lcd_Disp_Str);sprintf((char*) Lcd_Disp_Str, Mode:%s, ModeString[mode]);LCD_DisplayStringLine(Line4, Lcd_Disp_Str);}else if(D_state Para_Disp){sprintf((char*) Lcd_Disp_Str, Para);LCD_DisplayStringLine(Line0, Lcd_Disp_Str);sprintf((char*) Lcd_Disp_Str, PA6:%02d%%, (unsigned int)PA6_Duty);LCD_DisplayStringLine(Line2, Lcd_Disp_Str);sprintf((char*) Lcd_Disp_Str, PA7:%02d%%, (unsigned int)PA7_Duty);LCD_DisplayStringLine(Line4, Lcd_Disp_Str);} } 4. 按键 void Key_Proc(){if((uwTick_Set_Key - uwTick) 100)return;uwTick uwTick_Set_Key;Key_val Key_Scan();Key_up Key_val (Key_val ^ Key_old);Key_down ~Key_val (Key_val ^ Key_old);Key_old Key_val;switch(Key_down){case 1:if(D_state Data_Disp){LCD_Clear(Black);D_state Para_Disp;}else if(D_state Para_Disp){LCD_Clear(Black);D_state Data_Disp;}break;case 2:if(D_state Para_Disp){if(mode MANU){if(PA6_Duty 90){PA6_Duty 10;}else if(PA6_Duty 90)PA6_Duty 10;}}break;case 3:if(D_state Para_Disp){if(mode MANU){if(PA7_Duty 90){PA7_Duty 10;}else if(PA7_Duty 90)PA7_Duty 10;}}break;case 4:if(mode AUTO)mode MANU;else mode AUTO;break;} } 5. LED void Led_Proc(){if((uwTick_Set_Led - uwTick) 100)return;uwTick uwTick_Set_Led;if(mode AUTO){ucled | 0x01;}else if(mode MANU){ucled ~(0x01);}if(D_state Data_Disp)ucled | 0x02;else if(D_state Para_Disp)ucled ~(0x02);Led_Disp(ucled); } 6. PWM void Running_mode(){if((uwTick_Set_PWM - uwTick) 100)return;uwTick uwTick_Set_PWM;if(D_state Data_Disp){if(Key_down 3){if(mode AUTO){if(PWM_state_auto 0){//80M/(80*10K)100__HAL_TIM_SET_AUTORELOAD(htim3, 9999);// 80M/(80*5K) 200__HAL_TIM_SET_AUTORELOAD(htim17, 4999);__HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, (unsigned int)(10000*((R37_Volt)/3.3)));__HAL_TIM_SET_COMPARE(htim17, TIM_CHANNEL_1, (unsigned int)(5000*((R37_Volt)/3.3)));PWM_state_auto 1;}if(PWM_state_auto 1){//80M/(80*10K)100__HAL_TIM_SET_AUTORELOAD(htim17, 9999);// 80M/(80*5K) 200__HAL_TIM_SET_AUTORELOAD(htim3, 4999);__HAL_TIM_SET_COMPARE(htim17, TIM_CHANNEL_1, (unsigned int)(10000*((R37_Volt)/3.3)));__HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, (unsigned int)(5000*((R37_Volt)/3.3)));PWM_state_auto 0;}}切换PA6和PA7的频率else if(mode MANU){if(PWM_state_manu 0){__HAL_TIM_SET_AUTORELOAD(htim3, 9999);__HAL_TIM_SET_AUTORELOAD(htim17, 4999);//频率改变后占空比也要跟随毕竟跟周期有关__HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, (100*PA6_Duty));__HAL_TIM_SET_COMPARE(htim17, TIM_CHANNEL_1, (50*PA6_Duty));PWM_state_manu 1; }else if(PWM_state_manu 1){__HAL_TIM_SET_AUTORELOAD(htim17, 9999);__HAL_TIM_SET_AUTORELOAD(htim3, 4999);//频率改变后占空比也要跟随毕竟跟周期有关__HAL_TIM_SET_COMPARE(htim17, TIM_CHANNEL_1, (100*PA6_Duty));__HAL_TIM_SET_COMPARE(htim3, TIM_CHANNEL_1, (50*PA6_Duty));PWM_state_manu 0; }}} } } 7. BSP 这块不赘述了背就完了
http://www.pierceye.com/news/372561/

相关文章:

  • 好口碑关键词优化沈阳企业关键词优化
  • 外汇自动跟单网站开发wordpress支持中文
  • 南宁网站建设推广教育类网站框架
  • 定制网站建设服务公司摄影设计师招聘
  • 地图 添加到网站观点网站
  • 给分管领导网站建设情况汇报怎么写企业网站的发展历史
  • 佛山营销网站建设费用app制作器下载软件
  • 如何将优酷视频上传到自己网站万能网
  • 域名销售网站wordpress 数据库配置文件
  • 广州营销型网站建设怎么样做网站必须要认证吗
  • 网站开发主要内容免费商城平台
  • 青岛建站方案海兴县网站建设公司
  • 网站文案框架兰州网页制作公司网站
  • 专业网站有哪些平台wordpress那个版本
  • 网站建设按钮详情页设计图
  • 杭州公司注册代理中介深圳关键词优化软件
  • 乐清网站制作公司电话免费做初中试卷的网站
  • 注册一个网站的流程反向代理服务器做wordpress外网
  • 沁阳网站建设tomcat建网站
  • 品牌网站建设公司推荐网站建设公司3lue
  • 装修公司网站模版徐州品牌网站建设
  • 医疗网站建设计划书一级消防工程师考试科目
  • 信誉好的网站建设公司网站关停公告怎么做
  • 画图在什么网站上做兼职广告词
  • 昆明购物网站建设企业网络设计方案预算
  • 浙江省建设工程质监站网站什么是营销型网站建设
  • 做网站需要云数据库吗企业做网页还是网站
  • wordpress手机网站插件wordpress编辑器添加按钮弹出窗口
  • 网站建设验收单格式建筑工具网站
  • 比较简洁大方的网站伊春住房和城乡建设网站