ucos工程初始化完成后卡死在OSTimeDlyHMSM函数

今天重新新建了一个工程,把以前的代码移植过来发现初始化完成后卡死在OSTimeDlyHMSM。
在这里插入图片描述
经过各种测试发现,把串口功能注释掉就不会出现这个问题。问题是串口不背这个锅,新建一个简单的串口程序没有问题。查找了很长时间终于发现原来是串口中开的堆太大,超过配置的堆栈大小,只需要将堆增加就没有问题了。
在这里插入图片描述

STMicroelectronics(意法半导体)的STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,具有高性能、低功耗、丰富的外设和易于开发的特点。UCOSIII是一款常用的嵌入式实时操作系统。 要编写一个外部中断函数,需要先初始化GPIO以及NVIC。以下是一个简单的例子: ```c #include "stm32f10x.h" #include "ucos_ii.h" void EXTI9_5_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line5) != RESET) // 检测中断是否来自引脚5 { // 处理中断事件 // ... EXTI_ClearITPendingBit(EXTI_Line5); // 清除中断标志位 } } int main(void) { // 初始化GPIO GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 设置为上拉输入 GPIO_Init(GPIOC, &GPIO_InitStructure); // 初始化NVIC NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // 设置中断通道为5-9 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 设置抢占优先级为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 设置响应优先级为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // 初始化外部中断 EXTI_InitTypeDef EXTI_InitStructure; EXTI_ClearITPendingBit(EXTI_Line5); // 清除中断标志位 EXTI_InitStructure.EXTI_Line = EXTI_Line5; // 设置中断线为5 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; // 设置为中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // 设置下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); while(1) { // 运行其他代码 // ... OSTimeDlyHMSM(0, 0, 0, 10); // 延时10毫秒 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值