|
>1.ボーレートに関して ボーレートの値に関しては、指定した数値から計算して設定されるので中途半端なスピードでも指定できるようになっています。 なので115200,384000くらいであれば問題なく動作すると思います(こちらでは460800bpsまでは動作を確認しています)。 上限に関しては、あまり大きすぎると次第に精度が悪くなってくるので、大体1Mbpsくらいが目安になります。 >2.UART3に関して > USART_Init(USART3, &USART_InitStructure); > USART_Cmd(USART3, ENABLE); 初期化に関してはご指摘の通り、UART_init()の内容をコピーして頂いて、USART2をUSART3に置き換えて頂ければ動きます。 具体的には上記2つの変更に加えて、クロックの設定 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); と、GPIOの設定で /* Configure USARTx_Tx as alternate function push-pull */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure USARTx_Rx as input floating */ GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); と変更してください。 また、現在お使いのライブラリがv1.0.xの場合にはinc/stm32f10x_conf.h内、v2.0.xの場合にはinc/coron.h内の //#define _USART3 を #define _USART3 としてください(USART3に関するライブラリ使用の宣言です)。 >3. ポートを開いた後ににパリティを操作することはできますか? データごとにパリティを変更する簡単な方法として、データ長を USART_InitStructure.USART_WordLength = USART_WordLength_8b; から USART_InitStructure.USART_WordLength = USART_WordLength_9b; と変更して9bitにするのが良いかと思います。 そして、送信の際に例えばパリティ=1,データ=0x45ならば USART_SendData( USART3,0x0145 ); パリティ=0,データ=0x67ならば USART_SendData( USART3,0x0067 ); とすればマルチプロセッサ通信に対応できます。 (同様に受信時もUSART_ReceiveData(USART3);で9bit分のデータが返ってきます) その他、ご不明な点がございましたらお気軽にご連絡ください。 |