本帖最后由 arm8686 于 2015-2-8 22:22 编辑
眼前不是我熟悉的双眼
陌生的感觉一点点
但是他的故事我怀念
回头有一群朴素的少年
轻轻松松地走远
不知道哪一天再相见
—— Beyond 《大地》(国语版)
(以下算是华丽的分割线)
寄存器直接访问 —— 寄存器直接访问 —— 寄存器直接访问 —— 寄存器直接访问
(以上算是华丽的分割线)
这就是标题中所言的【熟悉的感觉】!
STM32SnippetsF0Example Code
snippets covering STM32 F0 serie
Key Features:
1. Complete free C source code firmware examples for STM32F0xx microcontrollers
2. Basic examples using register direct-accesses as defined in CMSIS Cortex-M0 Device Peripheral Access Layer Header File (sm32f0xx.h)
3. Self-documented code
4. Compliant with MISRA
5. Compliant with EWARM and MDK-ARM
粘贴一段代码,示例一下:
- /**
- * @brief This function configures USART1.
- * @param None
- * @retval None
- */
- __INLINE void Configure_USART1(void)
- {
- /* Enable the peripheral clock USART1 */
- RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
- /* Configure USART1 */
- /* (1) oversampling by 16, 9600 baud */
- /* (2) 8 data bit, 1 start bit, 1 stop bit, no parity */
- USART1->BRR = 480000 / 96; /* (1) */
- USART1->CR1 = USART_CR1_TE | USART_CR1_UE; /* (2) */
-
- /* polling idle frame Transmission */
- while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC)
- {
- /* add time out here for a robust application */
- }
- USART1->ICR |= USART_ICR_TCCF;/* clear TC flag */
- USART1->CR1 |= USART_CR1_TCIE;/* enable TC interrupt */
-
- /* Configure IT */
- /* (3) Set priority for USART1_IRQn */
- /* (4) Enable USART1_IRQn */
- NVIC_SetPriority(USART1_IRQn, 0); /* (3) */
- NVIC_EnableIRQ(USART1_IRQn); /* (4) */
- }
复制代码 这一行有点意思:
- USART1->BRR = 480000 / 96; /* (1) */
复制代码 这就是 48000000/9600 去掉了两个 0。比手算出来再赋值,好理解一点。
另外,在 system_stm32f0xx.c 文件中有 SystemCoreClock 作为全局变量,不过还没有通过某个 .h 文件 extern 出来。
|
STM32 Snippet
STM32 Snippet
STM32F072RBT6 RM0091
亮了