万里追牛
获得 0 次赞
帮助过358人
请教一个问题,C语言函数参变是用4个8位的参数好还是一个32位的参数好? 如果用4个8位,传送参数时可能是4个入栈动作,而32位的是一个动作; 但如果用4个8位函数内部就不需要32位去移位操作,函数简单些 用32位写函数内部需要移位处理; 从占用内存角度来说 4个8位是占用一个32位的空间,两者一样, 这里是这样的吗?我不能肯定; 如果函数参变是用4个8位的参数好还是4个32位的参数好呢? 8位数在32位ARM内核好像是比32位数还要多出移位动作? 这样比较感觉4个 32位更划得来, 但从占用内存角度来说 4个32位占用空间可能比4个8位多;
用的单片机是STC12C5A10S2,写了一个程序让它的一个IO口输出PWM波,没有示波器,逻辑分析仪等硬件仪器,那如何看这个PWM波程序的效果呢? 用proteus软件可以吗?还有其他的方法吗?
如题。挂起函数ret返回值是RT_EOK。但是调试的时候,该线程还是在不停的运行。 还有另外一个线程等待获取队列消息。没其他线程了。 static void led2_thread_entry(void* parameter) { rt_err_t ret; uint8_t finishFlg = 0; while(1) { ledAllClose(); AW9110B_set_luminance(LED_BATT_WHITE_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(20); AW9110B_set_luminance(LED_BATT_ORG_CHANN 0); rt_thread_delay(20); AW9110B_set_luminance(LED_BATT_RED_CHANN 0); rt_thread_delay(200); AW9110B_set_luminance(LED_CLEAN_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(200); AW9110B_set_luminance(LED_LOCK_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(200); AW9110B_set_luminance(LED_SPEED_LOW_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(200); AW9110B_set_luminance(LED_SPEED_MID_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(200); AW9110B_set_luminance(LED_SPEED_HIGH_CHANN MAX_LED_WHITE_VAL); rt_thread_delay(200); finishFlg = 1; ret = rt_mq_send(testMq &finishFlg sizeof(finishFlg)); if(RT_EOK != ret) { rt_kprintf("发送失败,错误代码:%x\r\n" ret); } ret = rt_thread_suspend(led2_thread); if(RT_EOK != ret) { rt_kprintf("线程挂起失败,错误代码:%x\r\n" ret); } } }