stm32错误记录

1.使用LCD屏幕时,只用st-link时,亮度很暗,需要用usb数据线额外给屏幕供电;


2.移植freertos到f103c8t6芯片时,工程没有错误,但单片机没有反应;

需要将堆的大小改成10*1024;


3.在找已经移植好的freertos的f103工程时,找到的不是f103c8系列;这里以f103c6系列为例,总会出现Error:Flash Download failed-“Cortex-M3的报错;​

4.裸机stm32下,移植江协科技的OLED库,正常使用;移植freertos后,没有创建任务只有OLED_ShowString ()这个函数无法使用,只要带有这个函数,oled屏幕黑屏。

解决方案:利用OLED_ShowChar()函数,自己实现了一个OLED_ShowString 。


5.在给f103遥控器编码器设置队列发送接收时失败:

(1)在中断中发送消息,发送使用xQueueSendFromISR,接收使用xQueueReceiveFromISR;

(2)编码器接口配置成外部中断,NVIC抢占优先级一定要高于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY == 5;

这里stm32的优先级是数字越小,优先级越高;rtos的是数字越大,优先级越高;

要想在中断中使用队列、信号量时,优先级一定要低于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY。这里的优先级比较是以stm32的优先级为准,比如configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY为5,我要在中断中使用队列,那么这个中断的抢占优先级要小于等于5,即NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;这个值大于等于5即可;

注意: 

解决方法:查看正点原子的手册时,中断测试实验中,这里的宏定义为5。

定时器3的抢占优先级为4,高于5,说明优先级等级使用的是stm32的标准。

还有一点,不知道管理rtos与stm32优先级中界的宏定义是configMAX_SYSCALL_INTERRUPT_PRIORITY还是configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY(感觉是这个)

以下是deepseek给出的解答: configMAX_SYSCALL_INTERRUPT_PRIORITY是映射到寄存器后的实际值。


6.f1遥控器项目:一开始已经对KEY_Init进行初始化;

其中 KEY_Init函数如下所示:

按键B14和B15为普通按键;按键B8和B9为外部中断,通过编码器控制;

void KEY_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_14|GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz ;
	GPIO_Init(GPIOB,&GPIO_InitStructure);

	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);

	EXTI_InitTypeDef EXTI_InitStructure;
	EXTI_InitStructure.EXTI_Line = EXTI_Line8 | EXTI_Line9;
	EXTI_InitStructure.EXTI_LineCmd = ENABLE;
	EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_Init(&EXTI_InitStructure);
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
	
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_Init(&NVIC_InitStructure);
}

但在后续中的ShowMenu_task任务里还要再次调用KEY_Init,按键B8和B9才能正常运行;而没有调用KEY_Init时,B14和B15为普通按键可以使用。

未解决!!! 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值