我想在我的STM32 F091微控制器上使用電路板上的LED顯示字母(A-Z)的莫爾斯碼的程序。C函數的字符串數組
所以我做了所有的posibility的數組(K =短,L =長)
char *Morse[26] = {"KL", "LKKK", "LKLK", "LKK", "K", "KKLK", "LLK", "KKKK", "KK", "KLLL", "LKL", "KLKK", "LL", "LK", "LLL", "KLLK", "LLKL", "KLK", "KKK", "L", "KKL", "KKKL", "KLL", "LKKL", "LKLL", "LLKK"};
現在我的問題是,如果我在一個功能,使用該指針我只得到字符串的第一個字符在我的陣列中。例如,我只從「KL」獲得「K」。
如何獲得完整的字符串?我知道可以使用%s打印出完整的字符串,但是如何將其傳遞給函數?
我確切需要的是以下輸出(顯示在底部)。 然後檢查我的微控制器,如果字符是「K」(短)比LED短時間點亮,當字符爲「L」(長)時,LED將長時間點亮。
A: KL
B: LKKK
C: LKLK
D: LKK
E: K
F: KKLK
G: LLK
H: KKKK
I: KK
J: KLLL
K: LKL
L: KLKK
M: LL
N: LK
O: LLL
P: KLLK
Q: LLKL
R: KLK
S: KKK
T: L
U: KKL
V: KKKL
W: KLL
X: LKKL
Y: LKLL
Z: LLKK
例
int main(void)
{
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
for(char alphabet = 'A'; alphabet <= 'Z';alphabet++)
{
Morsecode(alphabet);
CharToLeds(*Morse[i]);
i++;
}
}
void Morsecode(char ch)
{
if(j == 26)
{
j = 0;
}
printf("\r\n %c: %s", ch ,Morse[j]);
HAL_Delay(1000);
j++;
}
void CharToLeds(char data)
{
if(data == 'K')
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);
}
if (data == 'L')
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(3000);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);
}
}
預先感謝
展只有'K'打印的代碼。 – Downvoter
[函數參數中數組的長度]的可能重複(http://stackoverflow.com/questions/8269048/length-of-array-in-function-argument) – Dan
注意:您應該限定數組(元素)以及它指向'const'以在Flash中存儲數據。沒有這個陣列,至少在珍貴的RAM中。 – Olaf