STM32开发笔记80: 在构造函数中调用延时函数应注意的问题

在STM32L053R8T6项目中,使用FreeRTOS操作系统时,发现单片机因在W5500驱动构造函数中调用osDelay延时函数导致死机。原因是osDelay在FreeRTOS启动后才能工作,但构造函数在main函数之前执行。解决方案包括通过参数选择延时函数实现或避免在构造函数中使用延时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单片机型号:STM32L053R8T6


W5500驱动程序完成后,运行时,单片机死机。W5500驱动程序先前已经在项目中具体应用过,运行的比较稳定。这次移植后,没有做改动,但是单片机运行时死机。

此项目与先前项目的不同点在于,项目中有FreeRTOS操作系统运行,原先的项目没有,最后将问题聚焦于W5500的构造函数上,如下程序所示:

CW5500::CW5500(void):CSpi()
{
	//uint8_t memsize[2][8] = {
  
  {2,2,2,2,2,2,2,2},{2,2,2,2,2,2,2,2}};
		
	//注册相关的函数
	reg_wizchip_cris_cbfunc(w5500_cris_enter, w5500_cris_exit);
	reg_wizchip_cs_cbfunc(w5500_cs_select, w5500_cs_deselect);
	reg_wizchip_spi_cbfunc(w5500_spi_readbyte, w5500_spi_writebyte);
    //硬件复位w5500
    this->reset();
    //软件复位w5500
    ctlwizchip(CW_RESET_WIZCHIP, (void*)NULL);
    //初始化socket buffer
    ctlwizchip(CW_INIT_WIZCHIP, (void*)memsiz
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snmplink

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值