完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "STM32f10x.h"
#include "Delay.h" #include "Exti.h" #include "Adc.h" #include "Led.h" #include "Uart_1.h" #include "includes.h" #define StartTaskPrio 8 #define StartStkSzie 64 OS_STK StartStk[StartStkSzie]; void StartTask(void *pdata); #define DispTaskPrio 6 //显示任务 #define DispStkSzie 128 OS_STK DispStk[DispStkSzie]; void DispTask(void *pdata); INT16U Temp; //采样值变量 OS_EVENT *Mbox; //定义消息邮箱 int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); Adc_Init(); Delay_Init(); //初始化延时函数 Exti_Init(); //外部中断初始化 Led_Init(); //初始化LED Uart_1_Init(115200); //初始化串口 OSInit(); //初始化ucosii OSTaskCreate(StartTask,(void*)0,(OS_STK*)&StartStk[StartStkSzie-1],StartTaskPrio); //创建开始任务 OSStart(); //启动操作系统 } void StartTask(void *pdata) { OS_CPU_SR cpu_sr=0; OS_ENTER_CRITICAL(); //关中断 OSTaskCreate(DispTask,(void*)0,(OS_STK*)&DispStk[DispStkSzie-1],DispTaskPrio); OS_EXIT_CRITICAL(); //开中断 while(1) { Led_1_On; OSTimeDly(OS_TICKS_PER_SEC/2); Led_1_Off; OSTimeDly(OS_TICKS_PER_SEC/2); } } void DispTask(void *pdata) { INT16U Samp; INT8U Err; pdata=pdata; Mbox=OSMboxCreate((void*)0);//创建消息邮箱 while(1) { Samp=*(INT16U*)OSMboxPend(Mbox,0,&Err); //将无类型的消息邮箱(地址)转换成AD变量的INT16类型,再获取该地址的数据 printf("n%dn",Samp); OSTimeDly(2); } } /*====================================================== 外部中断函数 =======================================================*/ void EXTI3_IRQHandler(void) { OSIntEnter(); Delay_Ms(10); if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0) { Temp=Get_Adc_Value(1); //采样 OSMboxPost(Mbox,(void*)&Temp); //发送消息 } EXTI_ClearITPendingBit(EXTI_Line4); //清除中断标志 OSIntExit(); } |
|
相关推荐
6个回答
|
|
中断里面加延时,硬伤
|
|
|
|
仿真DEBUG一下,目测是硬件错误
|
|
|
|
感觉像是你的系统定时器开启放的位置不对,你是不是放在OSInit()里面了?因为在你创建的第一个任务里没看见定时器的开启。
好吧,是我搞错了,因为你问的是进入外部中断,也就是说你是已经移植好,系统是能跑的。 |
|
|
|
那个延时是为了去抖,我已经找到原因了,因为我太粗心,退出中断时中断标志清除错了
|
|
|
|
尽管找到原因了还是建议中断中不要加延时
|
|
|
|
ok,谢啦
|
|
|
|
只有小组成员才能发言,加入小组>>
772 浏览 0 评论
1148 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1065浏览 3评论
190浏览 2评论
453浏览 2评论
366浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 01:04 , Processed in 2.227815 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号