如何解决这个问题?我系统时钟设定为了定时器10,NVIC里这两个东西报错,我哪里搞错了什么
25条回答 默认 最新
关注 获得0.30元问题酬金 引自免费微信小程序:皆我百晓生
要解决这个问题,首先确认您已经正确配置了时钟源,并且在
Clock Configuration
标签页中设置了NVIC Clock Source
为Timer10
。接下来,请检查Pinout & Configuration
标签页中的NVIC Clock
设置是否与您的硬件连接一致。如果您仍然遇到问题,可能是因为时钟中断(NVIC)相关的中断处理程序没有被正确编译。尝试将以下代码添加到您的项目文件中:
#include <freertos/FreeRTOS.h> #include <freertos/task.h> // 定义中断服务函数 void NvicInterruptHandler(void *param) { // 处理中断事件 } static void handleInterrupt(NVIC_InitTypeDef *NvicInitStruct) { // 获取当前任务 xTaskCreate(&NvicInterruptHandler, "NvicInterruptHandler", 1000, NULL, TskIDLE_PRIORITY + 1, NULL); } int main(void) { // 初始化NVIC NVIC_InitTypeDef NvicInitStruct = { .Priority = 2, .IntrSource = NVMC_IRQn, .IntrFlags = NVMC_FLAG, .Prescaler = 0, .CoarsePriority = 0, .Scalability = 0, .PriorityGroupIndex = 0 }; // 设置NVIC初始化结构体 NvicInitStruct.NvicIndex = NVMC_IRQn; NvicInitStruct.NvicPriority = NvicInitStruct.Priority; NvicInitStruct.NvicFlags = NvicInitStruct.IntrFlags; // 设置NVIC中断标志 NVIC_SetPriority(Nvmc_IRQn, NvicInitStruct.NvicPriority); // 初始化NVIC中断处理程序 NVIC_EnableIRQ(Nvmc_IRQn); NVIC_SetVector(Nvmc_IRQn, (uint32_t)handleInterrupt); // 将中断处理程序指针赋值给NVIC的中断向量地址 NVIC_EnableIRQ(Nvmc_IRQn); // 开始任务 vTaskStartScheduler(); return 0; }
然后,在
System Tick Timer
区域,确保您的定时器10(TIM10
)已启用,并且其内部中断(TIM10_IRQn
)已被注册为一个外部中断。如果您遵循上述步骤并仍遇到问题,请提供更多的关于您的硬件配置和软件环境的信息,以便进一步诊断和解决问题。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 crossover21 ARM64版本安装软件问题
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
- ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
- ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
- ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
- ¥15 QQ邮箱过期怎么恢复?
- ¥15 登录他人的vue项目显示服务器错误
- ¥15 (标签-android|关键词-app)