【发布时间】:2023-03-04 00:49:01
【问题描述】:
我是 Stack Exchange 社区的新手。我正在尝试在两个线程之间共享字符串的值。部分代码如下所示。 waveplayer.c 和 main.c 的两个内容都声明为一个线程。并且字符串 buffer1 需要在两个线程之间共享。
我已将其声明为外部。
请帮忙寻找解决办法
谢谢你。
//waveplayer.c
uint16_t buffer1[_MAX_SS] ={0x00};
uint16_t buffer2[_MAX_SS] ={0x00};
extern FATFS fatfs;
extern FIL file;
extern FIL fileR;
extern DIR dir;
f_lseek(&fileR, WaveCounter);
f_read (&fileR, buffer1, _MAX_SS, &BytesRead);
//main.c
void USART3_SendDATA(void const *argument)
{
while(1)
{
// USART_SendData(USART3, 'X');
if(flagbuffer1)
{
f_read (&fileR, buffer1, _MAX_SS, &BytesRead);
for( j = 0; j< _MAX_SS; j++ )
USART_SendData(USART3, buffer1[j]);
flagbuffer1 = 0;
}
osThreadYield();
}
}
【问题讨论】:
-
什么线程?你在使用任何操作系统吗?
-
是的,我正在使用 cmsis_os 库来使用线程,这就是我在 main.c 中定义它们的方式 void AudioRecordPlayback(void const *argument); void USART3_SendDATA(void const *argument); osThreadId tid_AudoRecordPlayback; osThreadDef (AudioRecordPlayback, osPriorityNormal, 1, 0); osThreadId tid_USART3_SendDATA; osThreadDef (USART3_SendDATA, osPriorityBelowNormal, 1, 0); int main(void) { osKernelInitialize ();
标签: c string multithreading stm32f4discovery