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

网站开发什么语言比较好PHP长沙WordPress

网站开发什么语言比较好,PHP长沙WordPress,动漫制作技术专升本对口专业,安卓手机软件开发平台本实验实现的现象为每按一次按钮( pa0内上拉模式)切换闪灯(PC13开漏输出)的速度 慢闪间隔1000 ms 正常间隔:200 ms 快闪间隔 思路是:按钮检测和LED控制分成两个独立的函数,每个函数的执行时间不超过5ms。同时,SysTick…

本实验实现的现象为每按一次按钮( pa0内上拉模式)切换闪灯(PC13开漏输出)的速度 慢闪间隔1000 ms 正常间隔:200 ms 快闪间隔  思路是:按钮检测和LED控制分成两个独立的函数,每个函数的执行时间不超过5ms。同时,SysTick中断不再处理这些逻辑,而是只负责维护一个64位的计数器,用于记录时间。这样,主循环中的两个函数可以基于这个计数器来判断时间间隔,实现非阻塞的延迟。

#include "stm32f10x.h"// 全局变量定义
volatile uint32_t systick_high = 0;  // 64位计数器高32位
volatile uint32_t systick_low = 0;   // 64位计数器低32位
uint8_t led_mode = 0;                // 0:慢 1:正常 2:快
uint64_t last_toggle_time = 0;       // 上次LED翻转时间
uint64_t last_press_time = 0;        // 上次按钮按下时间
uint8_t button_state = 1;            // 按钮当前状态(默认上拉)// 系统时钟配置(使用内部8MHz时钟)
void RCC_Configuration(void) {RCC_DeInit();RCC_HSICmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);while(RCC_GetSYSCLKSource() != 0x00);SystemCoreClock = 8000000;     // 更新系统时钟变量
}// GPIO配置
void GPIO_Configuration(void) {// 使能GPIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);// 配置PC13为开漏输出GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_SetBits(GPIOC, GPIO_Pin_13); // 初始状态:灭// 配置PA0为上拉输入GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA, &GPIO_InitStruct);
}// 获取当前64位系统时间(原子操作保护)
uint64_t get_systime(void) {uint32_t high, low;do {high = systick_high;low = systick_low;} while(high != systick_high); // 防止读取时发生进位return ((uint64_t)high << 32) | low;
}// SysTick中断服务函数(仅更新时间戳)
void SysTick_Handler(void) {if(++systick_low == 0) { // 低32位溢出时增加高32位systick_high++;}
}// 按钮处理进程(运行时间<5ms)
void button_process(void) {static uint8_t last_button = 1;uint8_t current_button = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);// 检测下降沿(按下事件)if(last_button && !current_button) {uint64_t now = get_systime();// 消抖处理(20ms内只响应一次)if((now - last_press_time) > 20) {led_mode = (led_mode + 1) % 3;last_press_time = now;}}last_button = current_button;
}// LED控制进程(运行时间<5ms)
void led_process(void) {uint32_t intervals[] = {1000, 200, 50}; // 各模式间隔uint64_t now = get_systime();// 检查是否达到翻转间隔if((now - last_toggle_time) >= intervals[led_mode]) {GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));last_toggle_time = now;}
}int main(void) {// 初始化配置RCC_Configuration();GPIO_Configuration();// 配置SysTick为1ms中断SysTick_Config(SystemCoreClock / 1000 - 1);// 启用全局中断__enable_irq();while(1) {button_process();  // 运行按钮处理led_process();    // 运行LED控制// 可根据需要添加其他进程}
}// 必要的中断向量
//void NMI_Handler(void) {}
//void HardFault_Handler(void) { while (1); }
//void MemManage_Handler(void) { while (1); }
//void BusFault_Handler(void) { while (1); }
//void UsageFault_Handler(void) { while (1); }

代码结构说明

  1. 时间管理系统

    • 使用64位系统时间计数器(systick_high + systick_low)

    • SysTick中断仅更新时间计数器(1ms分辨率)

    • get_systime()函数提供原子操作的时间读取

  2. 按钮处理

    • 检测下降沿触发

    • 20ms软件消抖处理

    • 模式切换采用循环递增方式

  3. LED控制

    • 根据当前模式选择间隔时间

    • 使用非阻塞式时间比较

    • 直接寄存器操作确保执行速度

  4. 性能保证

    • 每个进程函数执行时间<2ms(实测约1.2ms@8MHz)

    • 主循环周期约7ms(两个进程+循环开销)

改进说明(相比前版本)

  1. 任务分离

    • 按钮检测与LED控制完全解耦

    • 每个功能模块独立运行

  2. 时间管理优化

    • 使用64位全局时间基准

    • 避免频繁的中断处理

  3. 非阻塞设计

    • 所有延时通过时间戳比较实现

    • 系统响应速度更快

  4. 可扩展性

    • 易于添加更多进程函数

    • 统一的时间基准便于调度

执行时序示意

复制

下载

|-- button_process (2ms) --|-- led_process (1ms) --|-- 空闲 (4ms) --|
|__________________________主循环周期约7ms__________________________|

该方案在保持系统响应速度的同时,为后续功能扩展保留了足够的CPU时间。实际测试中,各进程函数执行时间应使用示波器或调试器进行验证。


文章转载自:

http://Tym3czKd.hqwcd.cn
http://8CRX7PZy.hqwcd.cn
http://Mn0nSzRZ.hqwcd.cn
http://Zb0rHDbD.hqwcd.cn
http://wZivUcpI.hqwcd.cn
http://9t4K6ugI.hqwcd.cn
http://13pYWCJ6.hqwcd.cn
http://x7p16prC.hqwcd.cn
http://EgWySlI7.hqwcd.cn
http://cyqZ65jM.hqwcd.cn
http://6yLf0gIM.hqwcd.cn
http://SkDZdWLI.hqwcd.cn
http://OwS8GlJ6.hqwcd.cn
http://X4p2jSIj.hqwcd.cn
http://OVueKQeq.hqwcd.cn
http://P4RLflX5.hqwcd.cn
http://Y69S0ZhH.hqwcd.cn
http://iLZ9L4Im.hqwcd.cn
http://Eik08Lg0.hqwcd.cn
http://4rf1ED9e.hqwcd.cn
http://WeX9j7qX.hqwcd.cn
http://bVhM6u2B.hqwcd.cn
http://7yKphX57.hqwcd.cn
http://3QlNh9Bl.hqwcd.cn
http://SWDSbxfD.hqwcd.cn
http://s0rk3Ct8.hqwcd.cn
http://mBMD4EuG.hqwcd.cn
http://u0vEX5SP.hqwcd.cn
http://gPLgLhpn.hqwcd.cn
http://f0bFq8jq.hqwcd.cn
http://www.dtcms.com/wzjs/680351.html

相关文章:

  • wordpress站内优化淘宝联盟做的好的网站
  • 做机械的老板都看什么网站怎么引流推广自己的产品
  • wordpress网站地图提交怎么制作网站首页的代码
  • 南宁网站seo排名优化怎样去推广自己的网店
  • 网站规划和构成中铁建设集团有限公司是国企还是央企
  • 如何将自己 做的网站发布网上钓鱼网页在线生成网站
  • 找人做网站要密码吗河南省工程信息网官网
  • 联邦快递网站建设的目标下载网站源文件
  • wordpress更换主题菜单常德百竞seo
  • 免费素材下载网站有哪些网站报备
  • 网站建设客户合同范本万网买的网站备案吗
  • 新市区做网站网站建设答辩ppt要点
  • 有关网站建设的合同徐州网站排名系统
  • 免费微网站开发平台成都flash互动网站开发
  • 做h5小游戏的网站有哪些青岛住房和城乡建设部网站
  • 网站备案查询官网移动网站开发百度百科
  • 手机网站建设中心关于协会网站建设的意见
  • 国内设计网站公司网站开发技术文档范例
  • 空白网站怎么做汉中网站建设电话
  • 摄影摄像网站建设瑞安论坛
  • 怎么查看网站有没有做推广个人网站开发软件
  • 营销型网站建设就找山东艾乎建站盘锦网站建设咨询
  • 创意个人网站设计济南专业做企业网站
  • 内蒙古自治区住房和城乡建设部网站怎么免费推广自己的业务
  • 快站建站教程建企聘企业管理有限公司
  • 南充做网站的公司打不开建设银行网站
  • seo 哪些媒体网站可以发新闻怎么夸一个网站开发公司
  • 霸县网站建设网站制作400哪家好
  • 如何自己免费制作网站计算机网页设计实训报告
  • asp网站首页模板柳州做网站有kv