2012-12-17 01:07 PM
I'm willing to init UART in asm and not sure is it required to configure specific IO port pin as output pin with Px_DDR and only then then I can use UART_TX or
the pin configures in output type automatically when UART is enabled in UART register? Example: There is shared UART1_TX/PA5 pin. After reset it is ''input'' - PA_DDR = $00 I want to use UART1 - prior that do I need this code or not?: ld A,♯%00100000 ; makes PA.5 - output ld PA_DDR,A #stm8s-uart-asm2012-12-19 01:12 AM
Hello karlen.
It's true that UART configures its TX pin as output, but you have to set Px_DDR, Px_CR1, Px_CR2 and Px_ODR too. There is a simple reason: the bit of Px_CR1, which is related to UART output, enables the push/pull ouput. If you let UART use its TX output pin as it's configured by default, it may not work because it's configured by default as open drain. It's also useful to set Px_CR2, since it controls the speed of transitions between high and low logic levels. I suggest you to set Px_ODR to the TX idle value too, because the other side of serial link may detect an error. I usually configure all pins as soon as possible by using the following instructions: MOV PA_ODR,#%00100000 MOV PA_DDR,#%00100000 MOV PA_CR1,#%00100000 MOV PA_CR2,#%00100000 However, your values may differ, because GPIO port pins are shared between various devices and/or application needs. You may also read STM8S family reference manual and your part datasheet to understand how to configure GPIOs according to your application. Regards EtaPhi