爱板网论坛

查看: 478|回复: 0

[原创] 【涂鸦TYDE3.0开发板试用体验】烧录第一个程序

[复制链接]

主题

好友

601

积分

举人

  • TA的每日心情
    开心
    2017-6-14 23:30
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2018-2-8 17:15:25 |显示全部楼层
           感谢坛友提供的涂鸦板子原理图,使得以后的开发工作可以顺利进行!
           涂鸦板子的主控MCU是STM32F103C8,也就是可以让用户自由编程以让板子连接各种传感器,并将数据发送到云平台上。我们先来看看原理图,板上的CP210XUSB转串口模块连着MCU的串口1(PA9、PA10),而MCU和TYWE1S的连接则是串口3(PB10、PB11),剩下的串口2则通过GPIO排针引出来了,整体设计非常紧凑且合理,那么,既然知道了串口1可以直接用作调试输出,那就来写个Hello World玩玩。

    3.JPG
    4.JPG
    5.JPG


           我选择使用STM32官方的CubeMX的HAL库进行开发,打开CubeMX选择正确的型号:F103C8:
    6.JPG

           晶振选择方面,我们可以发现板上使用8M外部高频晶振(HSE),如图:

    IMG_20180208_165036R.jpg

        使能外部高频晶振和串口1:
    7.jpg
    8.jpg

        修改串口1参数为115200波特率、八位数据位、无校验位,一位停止位:

    9.jpg

        这样子生成工程,就可以进行开发了。
        我选择使用板上的SWD接口外接JLINK烧录程序,在烧录选项中选择JINK,如果各位有STLINK的话也可以选择STLINK:

    IMG_20180208_160003R.jpg
    IMG_20180208_161054R.jpg
    10.jpg
    11.jpg


        这是串口1初始化代码:
    1. void UART1_Init(int baud)
    2. {
    3.         __HAL_RCC_GPIOA_CLK_ENABLE();       
    4.         __HAL_RCC_USART1_CLK_ENABLE();
    5.         __HAL_RCC_DMA1_CLK_ENABLE();
    6.        
    7.   GPIO_InitStruct.Pin = GPIO_PIN_9;
    8.   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    9.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    10.   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    11.   GPIO_InitStruct.Pin = GPIO_PIN_10;
    12.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    13.   GPIO_InitStruct.Pull = GPIO_NOPULL;
    14.   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    15.        
    16.   huart1.Instance = USART1;
    17.   huart1.Init.BaudRate = baud;
    18.   huart1.Init.WordLength = UART_WORDLENGTH_8B;
    19.   huart1.Init.StopBits = UART_STOPBITS_1;
    20.   huart1.Init.Parity = UART_PARITY_NONE;
    21.   huart1.Init.Mode = UART_MODE_TX_RX;
    22.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    23.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
    24.   HAL_UART_Init(&huart1);
    25.        
    26.         /*
    27.         __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
    28.         HAL_NVIC_SetPriority(USART1_IRQn,0,0);
    29.   HAL_NVIC_EnableIRQ(USART1_IRQn);
    30.        
    31.         hdma_usart1_rx.Instance = DMA1_Channel5;
    32.   hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
    33.   hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
    34.   hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
    35.   hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    36.   hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    37.   hdma_usart1_rx.Init.Mode = DMA_NORMAL;
    38.   hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
    39.   HAL_DMA_Init(&hdma_usart1_rx);
    40.   __HAL_LINKDMA(&huart1,hdmarx,hdma_usart1_rx);
    41.         */
    42. }
    复制代码
    1. int fputc(int ch,FILE *f)
    2. {
    3.         while(!(USART1->SR&(1<<7)));
    4.         USART1->DR=ch;
    5.   return ch;
    6. }
    复制代码
        效果:

    2.JPG



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /3 下一条

    手机版|爱板网

    GMT+8, 2018-5-23 05:30 , Processed in 0.076441 second(s), 13 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部