空闲期

今天是8月10日,看来日子真的是不经过啊。一转眼的功夫就过了10天了。上个月才在国内部服役2个月刚结束。一转眼的功夫,我空闲了10天了。不过这10天的空闲是有故事的。真是歪打正着啊。呵呵。为什么这么说呢?看下文吧。

我7月30日结束借调国内部的任务。在7月25日的时候,北京大领导安排我去北京做一个Flex项目。这个项目8月1日启动,当时什么也没有多想,就直接在msn上和领导聊天敲定了。随后的日子,是我始料莫及的。我犯了一个错误又一个错误。

在答应那边领导去北京做项目后,我突然想起了好多事情都在8月份要去做。整个8月我是繁忙的。具体事情如下:

1、8月8日, 原来的项目经理结婚。这个项目经理是我的哥们儿,所以我必须参加。

2、8月15日, 我原来高中的同学结婚,这个同学是女的,关系也是非常的不错,所以也是必须得参加。她早就跟我打过招呼了,不去不好。

3、8月29日,我自己个哥哥结婚,这个就不用说了,我这个当弟弟的肯定是少不了了。自己家搬喜事儿,必须的。

目前家里还在装修中。总不能装修一半就走人吧?等做完项目再回来继续装修?人家装修公司可不等你啊~!!!!

4、我还在准备一个考试。这个考试10月份考。但是10月份没有培训班,必须跟着8月份的班上课。必须得听,要不怎么考试啊?

5、我小妹8月5日,从日本回来团聚。已经2年没有见面了。她就8月在大连,9月份就走了。我这个当哥哥的,等她回来了,我再走,是不是有些不好啊?

综上所述事由,我觉得不应该这个时候去北京做项目。可是当时,我却没有想这么多,一口就答应了北京的领导。唉~~~真是后悔啊

于是,我回家后,给北京领导马上写了封邮件,告诉他我这些个事情。可是他就再也没有和我直接的通话,他在中间找了一个这边的项目经理找我谈话。我这个人是个软耳朵。听不得劝说。别人家一说软话,我就心软了。本来都决定不去的事情,让这边项目经理一劝,我竟然又答应去了。只不过和当初第一次谈的条件有所变化了。当初第一次谈话的条件是,去北京做项目,3个月让我回来一次。这次谈话后,答应让我3个月回来3次。可是我觉得还是不够用,我整个8月份的婚礼就3个。还有第一次谈话告诉我,回来的费用都是自理。这次告诉给我报销。咱这人就是憨厚,本来想着肯定是飞机票来回的。于是就答应他了。再就没说什么,就等着去了。结果中间又出现了差头,等真正要我过去的时候,礼拜五下午5点多了,让我去买火车票。当时我就气炸了。本来就不爱去,还这样给我安排。这不就是欺负人吗?我心里很不爽。我工作5年了。大连这边的领导对我都很好。上上下下,谁不知道我啊?这次成立新部门后,没想到,空降的这些北京的领导竟然这样对待大连这边的员工。真是太拿员工不当回事儿了。既然他不给我面子,我还有什么好说的?我当然不能答应他了。我又一次的改变了我的主意。我决定不去了。惹不起你,我还躲不起你吗?我不做你北京的项目成吗?当时我就在电话里问他:别人出差都是坐飞机,怎么到我这儿,就坐火车了?

来回这么折腾,我折腾不起! 我知道他是为了省成本。但是我的心里不平衡。我那么多事情都答应他去了,结果他还这样对我。更加坚定了我不去的信心。在电话中,口口声声的说,他那边没有Flex人员,很难招聘一个合适的人。我好容易答应他了,结果,他还这么整,呵呵。真不知道他这个项目经理怎么想的? 也许是我太不适应他的处事风格了。俗话说,道不同不相为谋。看来我们是不可调和的产物。看来我是没有缘分和他一起共事了。所以至今,我就这么坐了10天。正好利用这段时间好好看看书。备考啊~~~(也是个痛苦的事儿)

人生的意义在于什么?就在于解决一件又一件的事情。自己折磨自己。

希望事情能有个好的结果。等待吧。

 

#include "stm32f10x.h" // Device header #include "logger.h" #include "Delay.h" /** * 函 数:按键初始化 * 参 数:无 * 返 回 值:无 */ void Key_Init(void) { /*开启时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); /*GPIO初始化*/ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); //将PB1和PB11引脚初始化为上拉输入 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1); EXTI_InitTypeDef EXTI_InitStruct; EXTI_InitStruct.EXTI_Line = EXTI_Line1; EXTI_InitStruct.EXTI_LineCmd = ENABLE; EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_Init(&EXTI_InitStruct); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = EXTI1_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_InitStruct); logger_msg("info" ,"Key" ,"Key init complete"); } /** * 函 数:按键获取键码 * 参 数:无 * 返 回 值:按下按键的键码值,范围:0~2,返回0代表没有按键按下 * 注意事项:此函数是阻塞式操作,当按键按住不放时,函数会卡住,直到按键松手 */ //uint8_t KeyNum = 0; //定义变量,默认键码值为0 uint8_t KeyNum[10]; uint8_t pk_KeyNum = 0; uint8_t pw_KeyNum = 0; uint8_t px_KeyNum_flag = 0; uint8_t Key_GetNum(void) { uint8_t Key; if((pk_KeyNum != pw_KeyNum) || px_KeyNum_flag == 1) //未达到边界条件则读取并返回 { if(px_KeyNum_flag == 1) { px_KeyNum_flag = 0; } Key = KeyNum[pk_KeyNum]; pk_KeyNum = (pk_KeyNum + 1) % 10; return Key; } else if((pk_KeyNum == pw_KeyNum) && px_KeyNum_flag != 1) { return 0; } return 0; } void EXTI1_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line1) == SET) //下降沿触发 { if(px_KeyNum_flag != 1) //flag不等于1说明buf没满 { if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1) == 0) { KeyNum[pw_KeyNum] = 1; pw_KeyNum = (pw_KeyNum + 1) % 10; } if(pw_KeyNum == pk_KeyNum) { px_KeyNum_flag = 1; } } EXTI_ClearITPendingBit(EXTI_Line1); } }为什么无法进入中断。除了此中断之外还有一个高速的频繁使用但是存在空闲的,抢占优先级为1的中断存在
11-14
在STM32F10x中,按键中断无法进入且存在抢占优先级为1的高速频繁使用但有空闲的中断,可能有以下原因: ### 中断优先级问题 - **抢占优先级冲突**:若按键中断的抢占优先级低于优先级为1的高速频繁中断,当高速频繁中断触发时,会抢占按键中断的执行。即便高速频繁中断有空闲,但在按键中断请求发生时,若高速频繁中断正在执行,按键中断就无法立即响应。例如,若按键中断的抢占优先级设置为2,低于高速频繁中断的优先级1,就会出现这种情况。 - **响应优先级影响**:当两个中断的抢占优先级相同时,响应优先级较低的中断会等待响应优先级高的中断处理完成。若按键中断和高速频繁中断的抢占优先级相同,但按键中断响应优先级低,也可能导致按键中断不能及时进入。 ### 硬件连接问题 - **按键引脚连接错误**:按键引脚可能没有正确连接到STM32F10x的对应引脚,或者引脚存在松动、虚焊等问题,导致按键产生的电信号无法正确传输到芯片。 - **按键电路故障**:按键的上拉或下拉电阻可能损坏,或者按键本身出现故障,使得按键按下时无法产生有效的电平变化,从而无法触发中断。 ### 软件配置问题 - **中断使能配置错误**:在代码中,可能没有正确使能按键中断。例如,在NVIC(嵌套向量中断控制器)中没有正确配置按键中断的使能位,或者在GPIO(通用输入输出)配置中没有将按键引脚配置为中断模式。 - **中断服务函数定义错误**:按键中断服务函数的名称可能没有按照正确的格式定义,或者中断服务函数的代码存在错误,导致程序无法正确跳转到中断服务函数执行。 - **中断标志位处理不当**:在中断处理完成后,需要清除相应的中断标志位。若没有正确清除按键中断标志位,可能会导致后续按键中断无法再次触发。 ### 代码示例 以下是一个简单的按键中断配置示例,可参考检查代码是否正确: ```c #include "stm32f10x.h" void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // 使能GPIO和AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); // 配置按键引脚为浮空输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); // 将按键引脚连接到外部中断线 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // 配置外部中断线 EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); // 配置NVIC NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; // 可根据情况调整优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } // 按键中断服务函数 void EXTI0_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0) != RESET) { // 处理按键中断 // ... // 清除中断标志位 EXTI_ClearITPendingBit(EXTI_Line0); } } int main(void) { KEY_Init(); while(1) { // 主循环代码 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值