2222#define RX_BUFFER_LENGTH 20U
2323#define TX_BUFFER_LENGTH 13U
2424
25- const char * msg = "Hello world\r\n\0" ;
25+ const char * msg = "Hello world\r\n\0" ;
2626
2727char buff [RX_BUFFER_LENGTH ];
2828
29-
30- /**
31- * @brief Configure DMA1 channel 4 to work with USART1 transmitter
32- * It reads from memory and writes to USART data register
33- */
34- void dma_usart_tx_init (void ){
35- // enable clock for dma peripheral registers
29+ void dma1_clock_enable (void )
30+ {
3631 RCC -> AHBENR |= RCC_AHBENR_DMA1EN ;
32+ }
3733
34+ void dma_usart_tx_init (void )
35+ {
3836 // USART TX is mapped to DMA1 channel 4
3937 // set peripheral address to USART data register
40- DMA1_Channel4 -> CPAR = (uint32_t ) & USART1 -> DR ;
38+ DMA1_Channel4 -> CPAR = (uint32_t )& USART1 -> DR ;
4139
4240 // set memory address to address of string
43- DMA1_Channel4 -> CMAR = (uint32_t ) msg ;
41+ DMA1_Channel4 -> CMAR = (uint32_t )msg ;
4442
4543 // set number od dma transactions
4644 DMA1_Channel4 -> CNDTR = RX_BUFFER_LENGTH ;
@@ -55,56 +53,51 @@ void dma_usart_tx_init(void){
5553 DMA1_Channel4 -> CCR |= DMA_CCR_DIR ;
5654}
5755
58- /**
59- * @brief Enable DMA to accept request for channel 4
60- */
61- void dma_usart_tx_enable (void ){
56+ void dma_usart_tx_enable (void )
57+ {
6258 DMA1_Channel4 -> CCR |= DMA_CCR_EN ;
6359}
6460
65- void usart1_init (void ){
61+ void usart1_init (void )
62+ {
6663 // enable clock for GPIOA and USART1
67- RCC -> APB2ENR |= RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN ;
64+ RCC -> APB2ENR |= RCC_APB2ENR_USART1EN | RCC_APB2ENR_IOPAEN ;
6865
69- // reset pin configurations for PA9 and PA10
70- GPIOA -> CRH &= ~(GPIO_CRH_MODE10 | GPIO_CRH_MODE9 | GPIO_CRH_CNF10 | GPIO_CRH_CNF9 );
66+ // reset pin configurations for PA9 and PA10
67+ GPIOA -> CRH &= ~(GPIO_CRH_MODE10 | GPIO_CRH_MODE9 | GPIO_CRH_CNF10 | GPIO_CRH_CNF9 );
7168
72- // PA9 as Output@50Hz Alternate function
73- GPIOA -> CRH |= GPIO_CRH_MODE9_0 | GPIO_CRH_MODE9_1 | GPIO_CRH_CNF9_1 ;
69+ // PA9 as Output@50Hz Alternate function
70+ GPIOA -> CRH |= GPIO_CRH_MODE9_0 | GPIO_CRH_MODE9_1 | GPIO_CRH_CNF9_1 ;
7471
75- // PA10 as floating input
76- GPIOA -> CRH |= GPIO_CRH_CNF10_0 ;
72+ // PA10 as floating input
73+ GPIOA -> CRH |= GPIO_CRH_CNF10_0 ;
7774
7875 // set baud rate as 9600
79- uint32_t baud = (uint32_t )(SystemCoreClock / 9600 );
80- USART1 -> BRR = baud ;
76+ uint32_t baud = (uint32_t )(SystemCoreClock / 9600 );
77+ USART1 -> BRR = baud ;
8178
8279 // Enable transmitter
8380 USART1 -> CR1 |= USART_CR1_TE ;
8481
8582 // Enable DMA mode for transmitter
86- USART1 -> CR3 |= USART_CR3_DMAT ;
83+ USART1 -> CR3 |= USART_CR3_DMAT ;
8784}
8885
89- /**
90- * @brief Enable USART1 prescalers and output
91- */
92- void usart1_enable (void ){
86+ void usart1_enable (void )
87+ {
9388 USART1 -> CR1 |= USART_CR1_UE ;
9489}
9590
9691int main (void )
9792{
98- SysTick_Config (SystemCoreClock /1000 );
93+ dma1_clock_enable ();
94+ SysTick_Config (SystemCoreClock / 1000 );
9995 usart1_init ();
10096 dma_usart_tx_init ();
10197 dma_usart_tx_enable ();
10298 usart1_enable ();
10399
104100 while (1 )
105- {
106-
101+ {
107102 }
108-
109-
110103}
0 commit comments