OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5979|回复: 24

STM32F030R8T6库函数模板分享

[复制链接]

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
发表于 2019-12-3 10:46:36 | 显示全部楼层 |阅读模式
本帖最后由 叫我红领巾 于 2019-12-9 09:11 编辑

之前部分文件打开会乱码,现重新上传了一份,有需要的可以下载参照。

STM32F030R8T6模板20191209.rar

3.32 MB, 下载次数: 2881

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-3 13:50:36 | 显示全部楼层
帮顶                        
成功没有捷径
回复 支持 反对

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-3 13:50:57 | 显示全部楼层
感谢楼主分享               
成功没有捷径
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-6-20
在线时间
21 小时
发表于 2019-12-4 10:38:57 | 显示全部楼层
怎么是乱码呢
回复 支持 反对

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-12-4 13:23:54 | 显示全部楼层

应该是被锁住了   我看看
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2019-12-17 08:52:02 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2019-12-17 08:52:30 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-9-17
在线时间
2 小时
发表于 2019-12-23 17:19:22 | 显示全部楼层
谢谢分享3Q
回复 支持 反对

使用道具 举报

0

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2019-3-15
在线时间
30 小时
发表于 2019-12-24 08:17:47 | 显示全部楼层
不错,多谢分享!
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2019-12-26 11:08:18 | 显示全部楼层
楼主,按您发的模板,烧到STM32F030C8T6,跑不起来啊。只是改了LED灯的引脚,灯亮不起来。
void LED_Init(void)
{

  GPIO_InitTypeDef  GPIO_InitStructure;

  /* GPIOC Periph clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

  /* Configure PC8 and PC9 in output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}


int main(void)
{
        u32 adcx;
        float temp;
       
        delay_init();
        uart_init(115200);
        LED_Init();
        ADC1_Init();
    while(1)
   {                                       
//                GPIOB->ODR|=0X0001;        //               
//                GPIOC->ODR|=0X0008;        //       
            adcx=Get_Adc_Average();
                temp=(adcx*3.3)/4096;
            printf("%.3f\r\n",temp);
           LED = !LED;
           delay_ms(1000);
   }
}
回复 支持 反对

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-12-27 09:55:29 | 显示全部楼层
本帖最后由 叫我红领巾 于 2019-12-27 14:23 编辑
飞鸽19881129 发表于 2019-12-26 11:08
楼主,按您发的模板,烧到STM32F030C8T6,跑不起来啊。只是改了LED灯的引脚,灯亮不起来。
void LED_Init( ...

芯片是否选择为C8T6(我这个模板是R8T6),LED是用高电平还是低电平驱动?另外位定义是否有修改为对应的?
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2019-12-28 11:49:21 | 显示全部楼层
叫我红领巾 发表于 2019-12-27 09:55
芯片是否选择为C8T6(我这个模板是R8T6),LED是用高电平还是低电平驱动?另外位定义是否有修改为对应的 ...

1,芯片有换成C8T6
2,LED是低电平的时候亮,也就是灌电流亮灯
3,位定义也修改了:#define LED PAout(0)
把串口和ADC功能都去掉,主程序只剩下LED都不行。也试过窗口功能,也是没有反应。
回复 支持 反对

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-12-28 13:44:20 | 显示全部楼层
飞鸽19881129 发表于 2019-12-28 11:49
1,芯片有换成C8T6
2,LED是低电平的时候亮,也就是灌电流亮灯
3,位定义也修改了:#define LED PAout( ...

我看了一下,CM0内核不支持位带操作,也就是不能使用位定义,层主可以使用ODR来实现。
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2019-12-31 11:14:25 | 显示全部楼层
叫我红领巾 发表于 2019-12-28 13:44
我看了一下,CM0内核不支持位带操作,也就是不能使用位定义,层主可以使用ODR来实现。

非常感谢楼主解惑,LED可以亮了。不过又碰到一个问题,串口可以打印出来。但是不能接收,看了很久,找不出哪里有问题

/* USART初始化 */
void USART1_init(uint32_t baud)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStruct;
       
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //使能GPIOA的时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能USART的时钟
        /* USART1的端口配置 */
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);//配置PA9成第二功能引脚        TX
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);//配置PA10成第二功能引脚  RX       

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        /* USART1的基本配置 */
        USART_InitStructure.USART_BaudRate = baud;              //波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

        USART_Init(USART1, &USART_InitStructure);               
        USART_Cmd(USART1, ENABLE);                             //使能USART1
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);           //使能接收中断
       
        /* USART1的NVIC中断配置 */
        NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPriority = 0x02;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);                       
}
void USART2_init(uint32_t bound){
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStruct;
       
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //使能GPIOA的时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//使能USART的时钟

        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);//重映射
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;//USART1_TX | USART1_RX
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        USART_InitStructure.USART_BaudRate = bound;//波特率
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8位数据
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//1位停止位
        USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流
        USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;//收发模式
        USART_Init(USART2,&USART_InitStructure);        
       
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断
        USART_Cmd(USART2,ENABLE);//使能串口1

        /* USART2的NVIC中断配置 */
        NVIC_InitStruct.NVIC_IRQChannel = USART2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPriority = 0x01;
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);         
}


void USART1_IRQHandler(void)                        //串口1中断服务程序
        {
        u8 Res;
//        delay_us(5);
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
        {
                Res =USART_ReceiveData(USART1);        //读取接收到的数据
//                printf("RES = %d",Res);
                if((USART_RX_STA&0x8000)==0)//接收未完成
                        {
                                if(USART_RX_STA&0x4000)//接收到了0x0d
                                {
                                if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
                                else USART_RX_STA|=0x8000;        //接收完成了
                                }
                        else //还没收到0X0D
                                {       
                                if(Res==0x0d)USART_RX_STA|=0x4000;
                                else
                                        {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收          
                                        }                 
                                }
                        }                    
     }
}

int main(void)
{
        u32 adcx;
        float temp;
        u16 i;
        u32 len;
        delay_init();
        USART1_init(9600);       
        USART2_init(9600);
        LED_Init();
    while(1)
   {                                       
//            printf("STM32F030 TEST");
                LED_ON_OFF();
                delay_ms(1000);
                   if(USART_RX_STA&0x8000)//串口1收到数据,向串口2发送数据
                {       
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        for(i=0;i<len;i++)
                        {
                                USART_SendData(USART2, USART_RX_BUF);//向串口2发送数据
                                while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);//等待串口2发送结束
                        }
                        USART_RX_STA=0;
                }
   }
}
回复 支持 反对

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2019-12-31 13:10:03 | 显示全部楼层
飞鸽19881129 发表于 2019-12-31 11:14
非常感谢楼主解惑,LED可以亮了。不过又碰到一个问题,串口可以打印出来。但是不能接收,看了很久,找不 ...

层主要不先试一下PB6 PB7 看看有没有问题
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2013-7-31
在线时间
13 小时
发表于 2020-1-3 21:07:09 | 显示全部楼层
叫我红领巾 发表于 2019-12-31 13:10
层主要不先试一下PB6 PB7 看看有没有问题

找到了问题了,代码没有问题。是第一次用SWD烧录,不太会用。感谢楼主耐心解答
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2019-3-31
在线时间
36 小时
发表于 2020-1-26 12:22:14 | 显示全部楼层
大佬们能不能分享一下你们的Keil.STM32F0xx_DFP吗
回复 支持 反对

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
353
金钱
353
注册时间
2019-4-22
在线时间
83 小时
 楼主| 发表于 2020-2-17 14:53:03 | 显示全部楼层
STM1995 发表于 2020-1-26 12:22
大佬们能不能分享一下你们的Keil.STM32F0xx_DFP吗

这个文件不太好上传 要不留个邮箱发你
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-8-8
在线时间
7 小时
发表于 2020-3-1 11:49:04 | 显示全部楼层
多谢楼主分享
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2018-4-22
在线时间
39 小时
发表于 2020-3-18 11:07:53 | 显示全部楼层
帮大忙了,感谢
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2019-8-29
在线时间
12 小时
发表于 2020-4-22 15:19:45 | 显示全部楼层
感谢楼主分享               
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-9-12
在线时间
5 小时
发表于 2020-4-23 22:21:48 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-9-26
在线时间
15 小时
发表于 2020-5-26 11:29:25 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-4-1
在线时间
1 小时
发表于 2024-2-1 10:22:00 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2024-1-22
在线时间
30 小时
发表于 2024-6-11 11:20:17 | 显示全部楼层
为啥为我debug进不到main函数啊,是我板子的问题吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表