/**************************************************************************//**
* @file core_cm3.c
* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File
* @version V1.30
* @date 30. October 2009
*
* @note
* Copyright (C) 2009 ARM Limited. All rights reserved.
*
* @par
* ARM Limited (ARM) is supplying this software for use with Cortex-M
* processor based microcontrollers. This file can be freely distributed
* within development tools that are supporting such ARM based processors.
*
* @par
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
* ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
******************************************************************************/
#include <stdint.h>
/* define compiler specific symbols */
#if defined ( __CC_ARM )
#define __ASM __asm /*!< asm keyword for ARM Compiler */
#define __INLINE __inline /*!< inline keyword for ARM Compiler */
#elif defined ( __ICCARM__ )
#define __ASM __asm /*!< asm keyword for IAR Compiler */
#define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
#elif defined ( __GNUC__ )
#define __ASM __asm /*!< asm keyword for GNU Compiler */
#define __INLINE inline /*!< inline keyword for GNU Compiler */
#elif defined ( __TASKING__ )
#define __ASM __asm /*!< asm keyword for TASKING Compiler */
#define __INLINE inline /*!< inline keyword for TASKING Compiler */
#endif
/* ################### Compiler specific Intrinsics ########################### */
#if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
/* ARM armcc specific functions */
/**
* @brief Return the Process Stack Pointer
*
* @return ProcessStackPointer
*
* Return the actual process stack pointer
*/
__ASM uint32_t __get_PSP(void)
{
mrs r0, psp
bx lr
}
/**
* @brief Set the Process Stack Pointer
*
* @param topOfProcStack Process Stack Pointer
*
* Assign the value ProcessStackPointer to the MSP
* (process stack pointer) Cortex processor register
*/
__ASM void __set_PSP(uint32_t topOfProcStack)
{
msr psp, r0
bx lr
}
/**
* @brief Return the Main Stack Pointer
*
* @return Main Stack Pointer
*
* Return the current value of the MSP (main stack pointer)
* Cortex processor register
*/
__ASM uint32_t __get_MSP(void)
{
mrs r0, msp
bx lr
}
/**
* @brief Set the Main Stack Pointer
*
* @param topOfMainStack Main Stack Pointer
*
* Assign the value mainStackPointer to the MSP
* (main stack pointer) Cortex processor register
*/
__ASM void __set_MSP(uint32_t mainStackPointer)
{
msr msp, r0
bx lr
}
/**
* @brief Reverse byte order in unsigned short value
*
* @param value value to reverse
* @return reversed value
*
* Reverse byte order in unsigned short value
*/
__ASM uint32_t __REV16(uint16_t value)
{
rev16 r0, r0
bx lr
}
/**
* @brief Reverse byte order in signed short value with sign extension to integer
*
* @param value value to reverse
* @return reversed value
*
* Reverse byte order in signed short value with sign extension to integer
*/
__ASM int32_t __REVSH(int16_t value)
{
revsh r0, r0
bx lr
}
#if (__ARMCC_VERSION < 400000)
/**
* @brief Remove the exclusive lock created by ldrex
*
* Removes the exclusive lock which is created by ldrex.
*/
__ASM void __CLREX(void)
{
clrex
}
/**
* @brief Return the Base Priority value
*
* @return BasePriority
*
* Return the content of the base priority register
*/
__ASM uint32_t __get_BASEPRI(void)
{
mrs r0, basepri
bx lr
}
/**
* @brief Set the Base Priority value
*
* @param basePri BasePriority
*
* Set the base priority register
*/
__ASM void __set_BASEPRI(uint32_t basePri)
{
msr basepri, r0
bx lr
}
/**
* @brief Return the Priority Mask value
*
* @return PriMask
*
* Return state of the priority mask bit from the priority mask register
*/
__ASM uint32_t __get_PRIMASK(void)
{
mrs r0, primask
bx lr
}
/**
* @brief Set the Priority Mask value
*
* @param priMask PriMask
*
* Set the priority mask bit in the priority mask register
*/
__ASM void __set_PRIMASK(uint32_t priMask)
{
msr primask, r0
bx lr
}
/**
* @brief Return the Fault Mask value
*
* @return FaultMask
*
* Return the content of the fault mask register
*/
__ASM uint32_t __get_FAULTMASK(void)
{
mrs r0, faultmask
bx lr
}
/**
* @brief Set the Fault Mask value
*
* @param faultMask faultMask value
*
* Set the fault mask register
*/
__ASM void __set_FAULTMASK(uint32_t faultMask)
{
msr faultmask, r0
bx lr
}
/**
* @brief Return the Control Register value
*
* @return Control value
*
* Return the content of the control register
*/
__ASM uint32_t __get_CONTROL(void)
{
mrs r0, control
bx lr
}
/**
* @brief Set the Control Register value
*
* @param control Control value
*
* Set the control register
*/
__ASM void __set_CONTROL(uint32_t control)
{
msr control, r0
bx lr
}
#endif /* __ARMCC_VERSION */
#elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
/* IAR iccarm specific functions */
#pragma diag_suppress=Pe940
/**
* @brief Return the Process Stack Pointer
*
* @return ProcessStackPointer
*
* Return the actual process stack pointer
*/
uint32_t __get_PSP(void)
{
__ASM("mrs r0, psp");
__ASM("bx lr");
}
/**
* @brief Set the Process Stack Pointer
*
* @param topOfProcStack Process Stack Pointer
*
* Assign the value ProcessStackPointer to the MSP
* (process stack pointer) Cortex processor register
*/
void __set_PSP(uint32_t topOfProcStack)
{
__ASM("msr psp, r0");
__ASM("bx lr");
}
/**
* @brief Return the Main Stack Pointer
*
* @return Main Stack Pointer
*
* Return the current value of the MSP (main stack pointer)
* Cortex processor register
*/
uint32_t __get_MSP(void)
{
__ASM("mrs r0, msp");
__ASM("bx lr");
}
/**
* @brief Set the Main Stack Pointer
*
* @param topOfMainStack Main Stack Pointer
*
* Assign the value mainStackPointer to the MSP
* (main stack pointer) Cortex processor register
*/
void __set_MSP(uint32_t topOfMainStack)
{
__ASM("msr msp, r0");
__ASM("bx lr");
}
/**
* @brief Reverse byte order in unsigned short value
*
* @param value value to reverse
* @return reversed value
*
* Reverse byte order in unsigned short value
*/
uint32_t __REV16(uint16_t value)
{
__ASM("rev16 r0, r0");
__ASM("bx lr");
}
/**
* @brief Reverse bit order of value
*
* @param value value to reverse
* @return reversed value
*
* Reverse bit order of value
*/
uint32_t __RBIT(uint32_t value)
{
__ASM("rbit r0, r0");
__ASM("bx lr");
}
/**
* @brief LDR Exclusive (8 bit)
*
* @param *addr address pointer
* @return value of (*address)
*
* Exclusive LDR command for 8 bit values)
*/
uint8_t __LDREXB(uint8_t *addr)
{
__ASM("ldrexb r0, [r0]");
__ASM("bx lr");
}
/**
* @brief LDR
没有合适的资源?快使用搜索试试~ 我知道了~
高云GW1NSR4C的M3硬核应用串口通信Keil工程文件
共88个文件
h:16个
o:15个
d:15个
需积分: 1 0 下载量 8 浏览量
2023-12-10
11:42:24
上传
评论
收藏 619KB ZIP 举报
温馨提示
官方基础上进行了修改,去掉了定时器,增加了8个led,使用78M主频,波特率14400。
资源推荐
资源详情
资源评论
收起资源包目录
uart.zip (88个子文件)
uart
CORE
core_cmFunc.h 16KB
core_cm3.h 84KB
core_cm3.c 17KB
core_cmInstr.h 19KB
PROJECT
uart.uvoptx 12KB
Objects
startup_gw1ns4c.d 59B
gw1ns4c_spi.o 84KB
gw1ns4c_gpio.crf 53KB
system_gw1ns4c.o 54KB
gw1ns4c_spi.crf 52KB
gw1ns4c_uart.crf 52KB
gw1ns4c_timer.crf 51KB
gw1ns4c_syscon.crf 51KB
gw1ns4c_wdog.o 76KB
uart.sct 494B
gw1ns4c_spi.d 1013B
retarget.o 60KB
gw1ns4c_misc.o 56KB
gw1ns4c_i2c.d 1013B
gw1ns4c_i2c.o 71KB
gw1ns4c_i2c.crf 53KB
core_cm3.o 11KB
gw1ns4c_misc.crf 51KB
retarget.crf 55KB
gw1ns4c_wdog.d 1KB
uart.lnp 666B
gw1ns4c_rtc.d 1013B
gw1ns4c_it.d 965B
gw1ns4c_gpio.d 1KB
system_gw1ns4c.crf 51KB
gw1ns4c_rtc.o 67KB
main.d 882B
gw1ns4c_syscon.d 1KB
system_gw1ns4c.d 989B
main.o 58KB
gw1ns4c_uart.o 80KB
core_cm3.crf 4KB
startup_gw1ns4c.o 5KB
uart.build_log.htm 2KB
core_cm3.d 112B
gw1ns4c_syscon.o 60KB
gw1ns4c_rtc.crf 51KB
gw1ns4c_timer.d 1KB
gw1ns4c_uart.d 1KB
uart_uart.dep 15KB
gw1ns4c_timer.o 68KB
main.crf 55KB
uart.htm 35KB
uart.axf 63KB
gw1ns4c_gpio.o 79KB
gw1ns4c_wdog.crf 52KB
gw1ns4c_misc.d 1KB
gw1ns4c_it.crf 52KB
gw1ns4c_it.o 95KB
retarget.d 954B
Listings
uart.map 90KB
startup_gw1ns4c.lst 35KB
uart.bin 2KB
uart.uvguix.jiwm 93KB
uart.uvprojx 17KB
EventRecorderStub.scvd 339B
SYSTEM
system_gw1ns4c.h 2KB
system_gw1ns4c.c 4KB
gw1ns4c.h 29KB
USER
gw1ns4c_it.h 2KB
retarget.c 1KB
gw1ns4c_conf.h 2KB
main.c 2KB
gw1ns4c_it.c 7KB
PERIPHERAL
Includes
gw1ns4c_uart.h 6KB
gw1ns4c_gpio.h 6KB
gw1ns4c_syscon.h 2KB
gw1ns4c_misc.h 5KB
gw1ns4c_spi.h 5KB
gw1ns4c_rtc.h 1KB
gw1ns4c_i2c.h 4KB
gw1ns4c_timer.h 3KB
gw1ns4c_wdog.h 4KB
Sources
gw1ns4c_uart.c 8KB
gw1ns4c_rtc.c 2KB
gw1ns4c_gpio.c 9KB
gw1ns4c_misc.c 4KB
gw1ns4c_i2c.c 7KB
gw1ns4c_timer.c 5KB
gw1ns4c_wdog.c 6KB
gw1ns4c_spi.c 6KB
gw1ns4c_syscon.c 3KB
STARTUP
startup_gw1ns4c.s 10KB
共 88 条
- 1
资源评论
SDAU2005
- 粉丝: 488
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功