国民MCU最具有性价比的N32G430开发板:开发板自带下载器,所有GPIO引出,可以做芯片所有功能测评。 本次测评主要是基础时钟分析,串口配置,printf打印函数使用,
芯片介绍:
― ―32 位 ARM Cortex-M4 内核+ FPU,支持 DSP 指令和 MPU
― ― 内置 1KB 指令 Cache 缓存,支持 Flash 加速单元执行程序 0 等待
― ― 最高主频 128MHz,160DMIPS
时钟树:
下面进行时钟测试:
上代码:
- #include <stdio.h>
- #include "main.h"
- USART_InitType USART_InitStructure;
- void delay_us(uint32_t delay_us)
- {
- volatile unsigned int num;
- volatile unsigned int t;
-
-
- for (num = 0; num < delay_us; num++)
- {
- t = 11;
- while (t != 0)
- {
- t--;
- }
- }
- }
- void delay_ms(uint16_t delay_ms)
- {
- volatile unsigned int num;
- for (num = 0; num < delay_ms; num++)
- {
- delay_us(1000);
- }
- }
- int main(void)
- {
- RCC_ClocksType RCC_ClocksStatus;
-
- /* System Clocks Configuration */
- RCC_Configuration();
- /* Configure the GPIO ports */
- GPIO_Configuration();
- RCC_Clocks_Frequencies_Value_Get(&RCC_ClocksStatus);
- /* USARTy and USARTz configuration ------------------------------------------------------*/
- USART_InitStructure.BaudRate = 115200;
- USART_InitStructure.WordLength = USART_WL_8B;
- USART_InitStructure.StopBits = USART_STPB_1;
- USART_InitStructure.Parity = USART_PE_NO;
- USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
- USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
- /* Configure USARTx */
- USART_Initializes(USARTx, &USART_InitStructure);
- /* Enable the USARTx */
- USART_Enable(USARTx);
- /* Output a message on Hyperterminal using printf function */
- // printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");
- while (1)
- {
- printf("SysclkFreq_Frequency %d \r\n",RCC_ClocksStatus.SysclkFreq);
- printf("HclkFreq_Frequency %d \r\n",RCC_ClocksStatus.HclkFreq);
- printf("Pclk1Freq_Frequency %d \r\n",RCC_ClocksStatus.Pclk1Freq);
- printf("Pclk2Freq_Frequency %d \r\n",RCC_ClocksStatus.Pclk2Freq);
- printf("AdcPllClkFreq_Frequency %d \r\n",RCC_ClocksStatus.AdcPllClkFreq);
- printf("AdcHclkFreq_Frequency %d \r\n",RCC_ClocksStatus.AdcHclkFreq);
- printf("\r\n"); printf("\r\n"); printf("\r\n");
-
- delay_ms(5000);
-
- }
- }
- /**
- *\*\name RCC_Configuration.
- *\*\fun Configures the different system clocks.
- *\*\param none
- *\*\return none
- **/
- void RCC_Configuration(void)
- {
- /* Enable GPIO clock */
- GPIO_AHBClkCmd(USARTx_GPIO_CLK);
- /* Enable USARTx Clock */
- USART_APBxClkCmd(USARTx_CLK);
- }
- /**
- *\*\name GPIO_Configuration.
- *\*\fun Configures the different GPIO ports.
- *\*\param none
- *\*\return none
- **/
- void GPIO_Configuration(void)
- {
- GPIO_InitType GPIO_InitStructure;
- /* Initialize GPIO_InitStructure */
- GPIO_Structure_Initialize(&GPIO_InitStructure);
- /* Configure USARTx Tx as alternate function push-pull */
- GPIO_InitStructure.Pin = USARTx_TxPin;
- GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
- GPIO_InitStructure.GPIO_Alternate = USARTx_Tx_GPIO_AF;
- GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);
- /* Configure USARTx Rx as alternate function push-pull */
- GPIO_InitStructure.Pin = USARTx_RxPin;
- GPIO_InitStructure.GPIO_Alternate = USARTx_Rx_GPIO_AF;
- GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);
- }
- /**
- *\*\name fputc.
- *\*\fun retarget the C library printf function to the USART
- *\*\param ch
- *\*\param f
- *\*\return none
- **/
- int fputc(int ch, FILE* f)
- {
- USART_Data_Send(USARTx, (uint8_t)ch);
- while (USART_Flag_Status_Get(USARTx, USART_FLAG_TXDE) == RESET)
- ;
- return (ch);
- }
- #ifdef USE_FULL_ASSERT
- /**
- *\*\name assert_failed.
- *\*\fun Reports the name of the source file and the source line number
- *\*\ where the assert_param error has occurred.
- *\*\param file pointer to the source file name
- *\*\param line assert_param error line source number
- *\*\return none
- **/
- void assert_failed(const uint8_t* expr, const uint8_t* file, uint32_t line)
- {
- /* User can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* Infinite loop */
- while (1)
- {
- }
- }
- #endif
结构体:
- typedef struct
- {
- uint32_t SysclkFreq; /* returns SYSCLK clock frequency expressed in Hz */
- uint32_t HclkFreq; /* returns HCLK clock frequency expressed in Hz */
- uint32_t Pclk1Freq; /* returns PCLK1 clock frequency expressed in Hz */
- uint32_t Pclk2Freq; /* returns PCLK2 clock frequency expressed in Hz */
- uint32_t AdcPllClkFreq; /* returns ADCPLLCLK clock frequency expressed in Hz */
- uint32_t AdcHclkFreq; /* returns ADCHCLK clock frequency expressed in Hz */
- } RCC_ClocksType;
keil下寄存器查看
打印测试:
|