初级会员

- 积分
- 70
- 金钱
- 70
- 注册时间
- 2020-10-4
- 在线时间
- 13 小时
|
15金钱
非常麻烦原子哥或者路过的大佬可以解答一下,基于STM32F103C8T6的ADS1230例程可以直接下载到STM32F103RBT6的NANO板,串口数据也可以正常发送,但是现在要使模数转换后的值显示在板子上的数码管上,把NANO板的数码管和定时器相关函数移植到这个例程里面,数码管不显示,串口也不输出了,但是程序是正确的,没有错误,已经盯着看了好长时间了
下面这是例程
#include "stm32f10x.h"
#include <stdio.h>
#include "ADS1230.C"
u8 dat;
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div2);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO, ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Enable the USART1 Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void USART1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate =19200;
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_ClearFlag(USART1, USART_FLAG_TC);
}
void Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
dat = USART_ReceiveData(USART1);
}
}
int main(void)
{ u32 ADC_VALUE;
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART1_Configuration();
PDWN_0;
delayad(20);
PDWN_1;
SPEED_0;//SPEED PIN=0,datarate=10SPS(Internal Oscilltor)
//SPEED PIN=1,datarate=80SPS(Internal Oscilltor)
CLKIN_0;
GAINx64();
while(1)
{
ADC_VALUE=Read_ADS1230(1);
ADC_VALUE&=0X000FFFFF;
Uart1_PutChar(0X55);//Front Byte
Uart1_PutChar((u8)(ADC_VALUE>>16)&0X0000FF);
Uart1_PutChar((u8)(ADC_VALUE>>8)&0X0000FF);
Uart1_PutChar((u8)(ADC_VALUE&0X0000FF));
Uart1_PutChar(0XAA); //Last Byte
delayad(2000);//more than
}
}
下面是移植函数之后的程序
#include "smg.h"
#include "timer.h"
#include "led.h"
#include "delay.h"
#include "sys.h"
#include <stdio.h>
#include "ADS1230.C"
u8 dat;
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div2);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08)
}
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO, ENABLE);
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //¶¨òåGPIO3õê¼»ˉ½á11ìå
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void USART1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate =19200;
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_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_Cmd(USART1, ENABLE);
USART_ClearFlag(USART1, USART_FLAG_TC);
}
void Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
dat = USART_ReceiveData(USART1);
}
}
u8 smg_num[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x01,0x00};
u32 ADC_VALUE;
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART1_Configuration();
LED_SMG_Init();
LED_Init();
TIM3_Init(19,7199);//2ms¶¨ê±ÏÔê¾
PDWN_0;
delayad(20);
PDWN_1;
SPEED_0;
CLKIN_0;
GAINx64();
LED_SMG_Init();
LED_Init();
TIM3_Init(19,7199);
while(1)
{
ADC_VALUE=Read_ADS1230(1);
ADC_VALUE&=0X000FFFFF;
Uart1_PutChar(0X55);//Front Byte
Uart1_PutChar((u8)(ADC_VALUE>>16)&0X0000FF);
Uart1_PutChar((u8)(ADC_VALUE>>8)&0X0000FF);
Uart1_PutChar((u8)(ADC_VALUE&0X0000FF));
Uart1_PutChar(0XAA); //Last Byte
delayad(2000);//more than
}
}
u8 num,smg_wei=0;
u8 smg_duan=0;
u32 t=0;
long long h,g,f,e,d,c,b,a;
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)
{
t=ADC_VALUE;
h=t%10;g=t/10%10;f=t/100%10;e=t/1000%10;d=t/10000%10;c=t/100000%10;b=t/1000000%10;a=t/10000000%10;
switch(smg_wei)
{
case 0: num = smg_num[a]; break;
case 1: num =smg_num[b]; break;
case 2: num = smg_num[c]; break;
case 3: num = smg_num[d]; break;
case 4: num = smg_num[e]; break;
case 5: num = smg_num[f]; break;
case 6: num = smg_num[g]; break;
case 7: num = smg_num[h]; break;
}
LED_Write_Data(num,smg_wei);
LED_Refresh();
smg_wei++;
if(smg_wei==8) smg_wei=0;
}
TIM3->SR&=~(1<<0);
}
|
|