1411|0

74

帖子

0

资源

一粒金砂(中级)

MM32F103 点灯和串口实验

本帖最后由 serialworld 于 2018-10-30 20:21 编辑

     使用arm-gcc编译器,TrueStudio IDE集成开发环境。直接使用STM32F103的启动文件和连接文件,参考MM32官网上下载的DEMO程序,简单修改。使用STM32启动文件时要注意中断函数的命名和MM32库函数的命名不同。例如:串口中断函数STM32定义:
void USART1_IRQHandler(void), 而MM32定义为 void UART1_IRQHandler(void),需要修改对应的启动文件。


include "delay.h"
#include "sys.h"
#include "led.h"
#include "key.h"
#include  "uart.h"
#include "uart_nvic.h"
#include
#include

int _write(int32_t fd, char* ptr, int32_t len) {
    if (fd == STDOUT_FILENO || fd == STDERR_FILENO) {
        int32_t i = 0;
        while (i < len) {

            while (UART_GetFlagStatus(UART1, UART_IT_TXIEN) == RESET);
            UART_SendData(UART1,  (uint8_t) ptr[i++]);
//            usart_data_transmit(EVAL_COM1, (uint8_t) ptr[i++]);
//            while (RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE))
//                ;

        }
    }
    return len;
}
int main(void)
{   
    u8 t=0;
    u8 len;
   u16 times=0;
    delay_init();             //延时函数初始化      
    LED_Init();                   //初始化与LED连接的硬件接口
    KEY_Init();              //初始化与按键连接的硬件接口
    LED2=0;                    //点亮LED
//    uart_initwBaudRate(115200u);

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
    uart_nvic_init(115200);     //串口初始化为115200

    while(1)
    {
//        t=KEY_Scan(0);        //得到键值
        if(UART_RX_STA&0x8000)
        {
            len=UART_RX_STA&0x3fff;//得到此次接收到的数据长度
            printf("\r\n your message is \r\n");
            for(t=0;t             {
                while (UART_GetFlagStatus(UART1, UART_IT_TXIEN) == RESET);
                UART_SendData(UART1, (u8)UART_RX_BUF[t]);
            }
            printf("\r\n\r\n");//插入换行
            UART_RX_STA=0;
        }else
        {
            times++;
            if(times%5000==0)
            {
                printf("\r\n Serial port test\r\n");
            }
            if(times%200==0)printf("please input date\r\n");
            if(times%30==0)LED2=!LED2;//闪烁LED,提示系统正在运行.
            delay_ms(10);
        }
        switch(3)
        {                 
        case KEY3_PRES:
//            LED1=!LED1;
            break;
        case KEY4_PRES:
            LED2=!LED2;
            break;
        case WKUP_PRES:               
//            LED2=!LED2;
//            LED1=!LED1;
//            delay_ms(100);
            break;
        default:
            delay_ms(10);   
        }
//        printf("hello world !!\t\n");
    }     
}
MM32_1.PNG
mm32.jpg
mm32_1.jpg

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

关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表