西电32位嵌入式实验报告(4)

2019-03-27 19:37

EIC_IRQInitStructure.EIC_IRQChannelPriority = 3;

EIC_IRQInitStructure.EIC_IRQChannelCmd = ENABLE; EIC_IRQInit(&EIC_IRQInitStructure);

EIC_IRQInitStructure.EIC_IRQChannel = ADC_IRQChannel; EIC_IRQInitStructure.EIC_IRQChannelPriority = 10; EIC_IRQInit(&EIC_IRQInitStructure); EIC_IRQCmd(ENABLE); }

3.通用定时器计数子程序:

#include \

TB_InitTypeDef TB_InitStructure; ErrorStatus OSC4MStartUpStatus; void MRCC_Configuration(void); void EIC_Configuration(void); void main() {

#ifdef DEBUG debug(); #endif

MRCC_Configuration(); GPIO_Configuration(); EIC_Configuration();

TB_InitStructure.TB_Mode = TB_Mode_Timing;

TB_InitStructure.TB_ClockSource = TB_ClockSource_CKTIM;

TB_InitStructure.TB_Prescaler = 239; TB_InitStructure.TB_CounterMode = TB_CounterMode_Up;

TB_InitStructure.TB_AutoReload = 999; TB_Init(&TB_InitStructure);

TB_ITConfig(TB_IT_Update, ENABLE); TB_Cmd(ENABLE); while(1); }

void MRCC_Configuration(void) {

MRCC_DeInit();

OSC4MStartUpStatus = MRCC_WaitForOSC4MStartUp(); if(OSC4MStartUpStatus == SUCCESS) {

MRCC_HCLKConfig(MRCC_CKSYS_Div1); MRCC_CKTIMConfig(MRCC_HCLK_Div1); MRCC_PCLKConfig(MRCC_CKTIM_Div2);

CFG_FLASHBurstConfig(CFG_FLASHBurst_Enable);

MRCC_CKSYSConfig(MRCC_CKSYS_OSC4MPLL, MRCC_PLL_Mul_15);

}

MRCC_IOVoltageRangeConfig(MRCC_IOVoltageRange_3V3);

MRCC_PeripheralClockConfig(MRCC_Peripheral_TB | MRCC_Peripheral_GPIO, ENABLE); }

void EIC_Configuration(void) {

EIC_IRQInitTypeDef EIC_IRQInitStructure;

EIC_IRQInitStructure.EIC_IRQChannel = TB_IRQChannel; EIC_IRQInitStructure.EIC_IRQChannelPriority = 1;

EIC_IRQInitStructure.EIC_IRQChannelCmd = ENABLE; EIC_IRQInit(&EIC_IRQInitStructure); EIC_IRQCmd(ENABLE); }

4.流水灯子程序:

#include \

GPIO_InitTypeDef GPIO_InitStructure; ErrorStatus OSC4MStartUpStatus; void MRCC_Configuration(void); static void Delay(u32 nCount); u32 a=0; int main() {

#ifdef DEBUG debug(); #endif

MRCC_Configuration();

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 |GPIO_Pin_12 | GPIO_Pin_13 ;

GPIO_Init(GPIO0, &GPIO_InitStructure);

GPIO_PinMaskConfig(GPIO0, ~(GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_12| GPIO_Pin_13), ENABLE);

GPIO_Write(GPIO0, 0x00); while(1) {

GPIO_WriteBit(GPIO0, GPIO_Pin_8, Bit_SET); GPIO_WriteBit(GPIO0, GPIO_Pin_9, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_12, Bit_RESET); Delay(0xffFFF);

GPIO_WriteBit(GPIO0, GPIO_Pin_8, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_9, Bit_SET); GPIO_WriteBit(GPIO0, GPIO_Pin_12, Bit_RESET); Delay(0xfFFFF);

GPIO_WriteBit(GPIO0, GPIO_Pin_8, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_9, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_12, Bit_SET); Delay(0xfFFFF);

GPIO_WriteBit(GPIO0, GPIO_Pin_8, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_9, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_12, Bit_RESET); GPIO_WriteBit(GPIO0, GPIO_Pin_13, Bit_SET); Delay(0xfFFFF); } }

void MRCC_Configuration(void) {

MRCC_DeInit();

OSC4MStartUpStatus = MRCC_WaitForOSC4MStartUp();

if(OSC4MStartUpStatus == SUCCESS) {

MRCC_HCLKConfig(MRCC_CKSYS_Div2); MRCC_CKTIMConfig(MRCC_HCLK_Div2); MRCC_PCLKConfig(MRCC_CKTIM_Div1);

MRCC_CKSYSConfig(MRCC_CKSYS_OSC4MPLL, MRCC_PLL_Mul_15); }

MRCC_IOVoltageRangeConfig(MRCC_IOVoltageRange_3V3);

MRCC_PeripheralClockConfig(MRCC_Peripheral_GPIO, ENABLE); }

static void Delay(u32 nCount) {

u32 j = 0;

for(j = nCount; j != 0; j--); }

4. 中断服务子程序:

#include \

u8 pit=0,con=0,biao=0;

void USART1_IRQHandler(void) {

char che;

DisableInterrupts; / che = uart_getchar (UART1);

printf(\你发送的字符为: %c\\n\\n\

con=che;

EnableInterrupts; } #if 1

void PIT0_IRQHandler(void) {

LED_turn(LED1); PIT_Flag_Clear(PIT0); pit=1; } #else

extern u32 test_time;

void PIT0_IRQHandler(void) {

test_time++;

PIT_Flag_Clear(PIT0); }

#endif

void PORTA_IRQHandler() {

u8 n=0; n = 19;

if(PORTA_ISFR & (1 << n)) {

PORTA_ISFR |= (1 << n); con='0';

if (biao) printf(\关闭功能2\\n\ } n = 26;

if(PORTA_ISFR & (1 << n)) {

PORTA_ISFR |= (1 << n); con='2';printf(\开启功能2\\n\ biao=1;

//LED_turn(LED1); } }

5. 主程序:

/

#include \ void display( u16 result ); extern u8 con,pit,biao;

u8 dis_code[12]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,

0x7D,0x07,0x7F,0x6F,0x80,0xFF }; void main() {

char ch;

u8 ADresult,conn,i,j; u16 count; DisableInterrupts; LED_INIT();

pit_init_ms(PIT0,200); uart_init (UART1, 115200); adc_init (ADC0, SE17); gpio_init (PORTB,20,GPO,1); gpio_init (PORTB,21,GPO,1); gpio_init (PORTB,22,GPO,1); gpio_init (PORTB,23,GPO,1); exti_init(PORTA,26,rising_down); exti_init(PORTA,19,rising_down); for(i = 0;i< 8;i++) {

gpio_init (PORTD,i,GPO,1); }

EnableInterrupts ; disable_irq(68);

uart_irq_EN (UART1);

printf(\请输入控制字节: \\n\

while(1) {

if(conn!=con) {count=0;disable_irq(68);} conn=con; switch(conn)

{ case '1':printf(\串口回显功能\\n\ ch=uart_getchar(UART1);

printf(\你发送的字符为: %c\\n\\n\ break;

case '2':if(j==1) printf(\采样传送功能\\n\

ADresult=ad_ave(ADC0 ,SE17, ADC_8bit , 3);j++; if(con=='2'&&j>100)

{j=0; printf(\结果为 :%d\\n\\n\ display(ADresult); break;


西电32位嵌入式实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:东南大学计算力学习题及答案汇总(2011版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: